Institut fü ürr mu n g s m e c h a n i k und Strööm Umweltphysik im Bauwesen Ausgewählte Kapitel Dipl.-Ing. R. Ratke Prof. Dr.-Ing. W. Zielke Ausgabe: Oktober 2011 Institut für Strömungsmechanik und Umweltphysik im Bauwesen Vorlesungs- und Übungsskript • Theorie • • Mathematik • • Algorithmen • R. Ratke / W. Zielke Hannover – Ausgabe: Oktober 2011 Vorwort Dieses Skript enthält die theoretischen Grundlagen für eine Reihe von numerischen Modellen und das dazu benötigte mathematische Handwerkszeug des Ingenieurs. Es ist keinesfalls als auch nur halbwegs vollständige Zusammenfassung der Vorlesung Prozeßsimulation“ zu verstehen. Zu einigen weiteren ” Themen wird auf das Skript Strömungsmechanik II verwiesen. Anders als die Ingenieure früherer Tage sind wir heute in der Lage, auf sehr preiswerten und immer schnelleren Computern sehr komplexe Vorgänge zu simulieren. Die berechneten Ergebnisse sind oft so umfangreich, daß sie sinnvoll nur noch graphisch dargestellt werden können – in allen Übungsprogrammen unter MATLAB implementiert. Wir haben uns unter Beschränkung auf Wesentliches bemüht, die Beispiele klein und einfach zu halten. Entsprechende Programme (und Datenmengen!) aus der heutigen Baupraxis wären so groß, daß das Detailverständnis darunter leiden müßte. Die zugrunde liegenden Methoden aber sind dieselben. Benutzen Sie die Computer-Pools des Fachbereichs! Computersimulation nur aus einem (diesem) Buch lernen zu wollen, stellt sich immer wieder als Unmöglichkeit heraus. Fertigen Sie die Übungsprogramme ganz eigenständig an – nicht in einer Gruppe! Sie werden dabei naturgemäß viele Fehler machen; das erging uns auch nicht anders. Das Aufspüren und Beseitigen solcher Fehler hat aber den erwünschten Seiteneffekt, daß Sie sich mit der nicht gerade einfachen Materie sehr vertraut machen! Wir geben Ihnen in den Übungs- und Sprechstunden gern jede gewünschte Hilfestellung. An dieser Stelle sei besonders meinem Hilfsassistenten Ulrich Natke gedankt, der die erste Fassung sehr sorgfältig in LATEX gesetzt hat. Hannover, im September 2001 Inhaltsverzeichnis A Einführung 1 A.1 Typische Vorgehensweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 A.2 Begriffe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 A.3 Drei Grundaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 A.4 Deduktion und Induktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 A.4.1 Herleitung der Modelle über Deduktion . . . . . . . . . . . . . . . . . . . . . . 6 A.4.2 Herleitung der Modelle mittels Induktion . . . . . . . . . . . . . . . . . . . . . 6 A.4.3 Beispiel: Masse-Feder-System . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 A.5 Das Spektrum von Modellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 B Netzwerke: Einführung 9 B.1 Lineares Widerstandsnetzwerk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 B.1.1 Modellannahmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 B.1.2 Zur Problembeschreibung notwendige Daten . . . . . . . . . . . . . . . . . . . . 11 B.2 Zur Netzwerktopologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 B.2.1 Knoten-, Element- und Maschenanzahl . . . . . . . . . . . . . . . . . . . . . . . 12 B.3 Aufgabenstellung – Lösungswege . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 B.3.1 Grundgleichungen zum Widerstandsnetzwerk . . . . . . . . . . . . . . . . . . . 13 B.3.2 Das element- und maschenorientierte Verfahren . . . . . . . . . . . . . . . . . 14 B.3.3 Das knotenorientierte Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . 15 B.4 Knoten- oder maschenorientiert? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 B.4.1 Maschenorientiertes Verfahren – Vorteile . . . . . . . . . . . . . . . . . . . . . 17 B.4.2 Vorteile des knotenorientierten Verfahrens . . . . . . . . . . . . . . . . . . . . . i 17 C Nichtlineares Netzwerk: Rohrsysteme 19 C.1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 C.1.1 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 C.1.2 Elemente von Rohrsystemen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 C.2 Stationäre Berechnung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 C.2.1 Hydraulische Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 C.2.2 Gleichungssysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 C.2.3 Iterationsalgorithmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 C.3 Lernziele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 C.4 Anhang: SRS - Programmbeschreibung . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 C.4.1 Eingabebeschreibung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 C.4.2 Speicherplan zu SRS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 C.4.3 Kurzbeschreibung einiger Unterprogramme . . . . . . . . . . . . . . . . . . . . 42 C.4.4 Includefile für den Gleichungslöser . . . . . . . . . . . . . . . . . . . . . . . . . 44 D Handwerkszeug I: Lineare Gleichungssysteme 45 D.1 Generelles Vorgehen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 D.1.1 Staffeln der Koeffizientenmatrix . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 D.1.2 Lösung von A · x = r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 D.1.3 Zeitaufwand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 D.2 Gaußsches Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 D.3 Cholesky-Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 D.3.1 Effiziente Speicherung von A und O . . . . . . . . . . . . . . . . . . . . . . . . 50 D.4 Anhang: Programmbeispiel Choleskylöser . . . . . . . . . . . . . . . . . . . . . . . . . 54 D.5 Iterative Lösung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 D.5.1 Grundidee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 D.5.2 Methode des stärksten Abstiegs . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 D.5.3 Konjugierte Gradienten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 D.5.4 Konjugierte Gradienten mit Vorkonditionierung . . . . . . . . . . . . . . . . . . 63 D.6 Optimale Knotennumerierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 D.6.1 Cuthill-McKee-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 D.6.2 Rückwärtsnumerierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 D.6.3 GPS-Verfahren (Gibbs, Poole, Stockmeyer) . . . . . . . . . . . . . . . . . 66 D.6.4 Relaxation (Rosen) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 D.6.5 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ii 67 E Nichtlineares Netzwerk: Fachwerk, Theorie 2. Ordnung 71 E.1 Fachwerkstab nach linearer Theorie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 E.1.1 Bezeichnungen am Stabelement . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 E.1.2 Geometrie, Transformationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 E.1.3 Materialgesetz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 E.1.4 Lineare Elementsteifigkeitsmatrix . . . . . . . . . . . . . . . . . . . . . . . . . . 73 E.1.5 Gesamtsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 E.2 Nichtlinearitäten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 E.2.1 Große Verschiebungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 E.2.2 Nichtlineares Materialgesetz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 E.3 Übungsaufgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 E.3.1 Algorithmische Aufbereitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 E.4 Vergleich knotenorientierter Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 F Verkehrssimulation 79 F.1 Übersicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 F.2 Diskretisierung des Untersuchungsraumes . . . . . . . . . . . . . . . . . . . . . . . . . 80 F.3 Verkehrsverteilung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 F.3.1 Zusammenhänge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 F.3.2 Gravitationsmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 F.3.3 Splitmodelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 F.3.4 Iterationsschema I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 F.3.5 Bilineares Gleichungssystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 F.3.6 Konvergenzverbesserung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 F.3.7 Durchschnittsfaktormethode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 F.3.8 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 F.4 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 F.4.1 Bemerkungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 G Kalibrierung 93 G.1 Problemstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 G.2 Gütekriterium . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 G.2.1 Größter Absolutbetrag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 G.2.2 Summe der Beträge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iii 94 G.2.3 Fehlerquadratmethode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 G.3 Ein einfaches Schachtelungsverfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 G.3.1 Pseudocode zur Kalibrierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 G.4 Newton-Iteration: Kalibrierung bei Verkehrsverteilung . . . . . . . . . . . . . . . . . . 98 G.4.1 Fehlerquadrat und Distanzempfindlichkeit α . . . . . . . . . . . . . . . . . . . . 99 G.4.2 Näherungsansatz für das Fehlerquadrat . . . . . . . . . . . . . . . . . . . . . . 100 G.5 Gauß-Newton-Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 H Handwerkszeug II: Integration gewöhnlicher Differentialgleichungen 101 H.1 Adams-Bashfort-Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 H.2 Runge-Kutta-Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 H.2.1 Formeln für n=2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 H.2.2 Formelsatz 3. Ordnung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 H.2.3 Formelsatz 4. Ordnung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 H.2.4 Anwendung auf Systeme gewöhnlicher DGln . . . . . . . . . . . . . . . . . . . 104 H.2.5 Fehlerabschätzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 H.3 Steife Systeme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 H.3.1 Das Verfahren dritter Ordnung nach Jonas . . . . . . . . . . . . . . . . . . . . 105 H.3.2 Ein Halbierungsverfahren vierter Ordnung (Jonas) . . . . . . . . . . . . . . . . 106 H.3.3 Anwendung auf den Einmassenschwinger . . . . . . . . . . . . . . . . . . . . . 106 H.4 Praktische Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 I Klärwerkssimulation 111 I.1 Möglichkeiten der Modellbildung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 I.2 Ein nulldimensionales Teilmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 I.2.1 Systemkomponenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 I.2.2 Wachstumsgleichungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 I.2.3 Belüftung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 I.2.4 Diskretisierung des Modells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 J Differenzenverfahren I 115 J.1 Gerinnequerschnitt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 J.2 Explizite Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 J.2.1 Instabiles Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 J.2.2 Diffusives (Lax-) Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 iv J.3 J.2.3 Upstream-Differenzenverfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 J.2.4 Leap-Frog-Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 J.2.5 Lax-Wendroff-Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 J.2.6 Behandlung von Randbedingungen . . . . . . . . . . . . . . . . . . . . . . . . . 120 Implizite Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 J.3.1 J.4 J.5 Stabilität und Genauigkeit J.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 J.4.1 Courant-Friedrichs-Lewy-Kriterium . . . . . . . . . . . . . . . . . . . . . . . . . 129 J.4.2 Eine Stabilitätsanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 Ergänzungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 J.5.1 J.6 Das Preissmann-Schema Ordnung des Diskretisierungsfehlers . . . . . . . . . . . . . . . . . . . . . . . . 135 Ergänzung: Charakteristiken-Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 J.6.1 Die einfache Welle im Gerinne mit Normalabfluß . . . . . . . . . . . . . . . . . 137 J.6.2 Einfache Welle mit Reflektionen . . . . . . . . . . . . . . . . . . . . . . . . . . 139 Literaturhinweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 K Differenzenverfahren II: Transport in Fließgewässern 143 K.1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 K.2 Eindimensionale Transportgleichung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 K.2.1 Advektion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 K.2.2 Diffusion und Dispersion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 K.2.3 Anfangs- und Randbedingungen . . . . . . . . . . . . . . . . . . . . . . . . . . 148 K.3 Numerische Lösungsschemata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 K.3.1 Zentrale Differenzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 K.3.2 Upstream-Schema für Advektion . . . . . . . . . . . . . . . . . . . . . . . . . . 152 K.3.3 Nichtreflektierende Randbedingung am Ausstromrand . . . . . . . . . . . . . . 153 K.3.4 Numerische Dispersion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 L Diskrete Simulation: Zellulare Automaten 155 L.1 Was sind zellulare Automaten? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 L.1.1 Geschichte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 L.2 Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 L.2.1 Formale Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 L.2.2 Gittergeometrien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 v L.2.3 Nachbarschaftsbeziehungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 L.2.4 Zustände . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 L.2.5 Ränder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 L.3 Das Lebensspiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 L.3.1 Definitionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 L.3.2 Beobachtungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 L.4 Stausimulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 M Handwerkszeug III: Hilfsmittel für Finite Elemente 161 M.1 Natürliche Koordinaten für Dreiecke . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 M.1.1 Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 M.1.2 Ableitung der Flächenkoordinaten . . . . . . . . . . . . . . . . . . . . . . . . . 163 M.2 Partielle Integration, Gauß-Greenscher Satz . . . . . . . . . . . . . . . . . . . . . . . . 163 M.3 Numerische Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 M.3.1 Algebraische Darstellung für n = 2, 3 . . . . . . . . . . . . . . . . . . . . . . . 165 M.4 Allgemeines bilineares Viereckselement . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 M.4.1 Einheitsviereck . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 M.4.2 Formfunktionen im Einheitsviereck . . . . . . . . . . . . . . . . . . . . . . . . . 166 M.4.3 Differentialbeziehungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 M.5 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 N Stationäre Grundwasserströmung 169 N.1 Theorie der Grundwasserströmung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 N.1.1 Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 N.1.2 DGl für Standrohrspiegelhöhen h . . . . . . . . . . . . . . . . . . . . . . . . . . 171 N.2 Finite Element Methode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 N.2.1 Einfaches lineares Dreieckselement . . . . . . . . . . . . . . . . . . . . . . . . . 172 N.2.2 Kontinuitätsbedingung im Finite-Element-Netz . . . . . . . . . . . . . . . . . . 174 N.3 Verallgemeinerung des FE-Verfahrens . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 N.3.1 Linearer Ansatz in Flächenkoordinaten: . . . . . . . . . . . . . . . . . . . . . . 176 N.3.2 Residuenminimierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 N.3.3 Durchführung des Verfahrens von Galerkin . . . . . . . . . . . . . . . . . . . . 178 N.4 Ein einfaches Viereckselement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 N.5 Bilineares Viereckselement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 vi N.6 Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 N.6.1 Erste Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 N.6.2 Eckströmung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 N.6.3 Umströmung einer Spundwand . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 O Interpolation von Funktionswerten 185 O.1 Problemstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 O.2 Bestimmung der Koeffizienten ck . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 O.3 Skalierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 O.3.1 Normierung der xi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 O.3.2 Vorskalierung der xi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 O.3.3 Normierung des Systems und Genauigkeit . . . . . . . . . . . . . . . . . . . . . 187 O.4 Testbeispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 P MATLAB – Kurzanleitung P.1 Was ist Matlab? 189 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 P.1.1 Studentenversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 P.1.2 Erste Schritte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 P.2 Operatoren und Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 P.2.1 Allgemeine Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 P.2.2 Dateien, Ein- und Ausgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 P.2.3 Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 P.2.4 Matrix-Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 P.2.5 Mathematische Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 P.2.6 Textvariablen und -Konstanten . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 P.2.7 Steuerungskonstrukte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 P.2.8 Graphik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 vii Kapitel A Einführung - 1 - KAPITEL A - Einführung A.1 Typische Vorgehensweise Schadstoffausstoß aus einer Fabrik .. . λ = 64 Re (laminar) 2.51 √ + k = −2log Re 3.71d λ .. . .. . 100 IF (RE .LE. 2320) THEN LAMBDA = 64/RE ELSE CALL TURB & (RE,K,D,LAMBDA) END IF .. . bzw. √1 λ Tests und Verifikation Simulation politische Entscheidungen - 2 - A.1. Typische Vorgehensweise Einordnung des Problems Nr. Fragestellung Kurzantwort 1. Wie ist die Fragestellung? 2. Welche Informationen muß das Ergebnis enthalten? 3. Welche Informationen stehen zur Verfügung? 4. Wem wird das Ergebnis vorgelegt? 5. Welche Entscheidungen sind auf Grundlage der Ergebnisse zu treffen? 6. Wer trifft die Entscheidungen auf Basis der Modellresultate? - 3 - KAPITEL A - Einführung A.2 Begriffe Die Prozeßsimulation umfaßt die mathematische Modellierung und die Computersimulation von Ingenieuraufgaben und technisch-wissenschaftlichen Systemen aller Art. Nachfolgend werden einige häufig gebrauchte Begriffe vorgestellt und erläutert. Ein Modell repräsentiert einen Ausschnitt der (zum Teil auch nur gedachten) Wirklichkeit. Dieser Ausschnitt wird soweit wie erforderlich möglichst exakt durch das Modell beschrieben. Da für den vorgesehenen Zweck nicht alle Aspekte berücksichtigt werden können und sollen! (s. u.), ist ein solches Modell mehr oder weniger abstrakt; es ist auf die wesentlichen Gesichtspunkte beschränkt. Ein Modell dient immer bestimmten Zwecken, als da sind: • Vorhersage (z.B. Wetter, Einflüsse auf die Umwelt) • Konstruktion (Finite Elemente in der Statik) • Numerisches Experiment (um eine neue These zu untermauern) • Entscheidungsfindung (wirtschaftlich, politisch) Zur Beschreibung von Modellen sind natürliche Sprachen wegen ihrer inhärenten Mehrdeutigkeiten ungeeignet. Die Formelsprache der Mathematik, Physik und Technik ist dagegen anwendbar; ihr festes und unzweideutiges Regelwerk erlaubt die Umformung von Ausdrücken in vielfacher und nachvollziehbarer Weise. Das gilt auch für unscharfe“ Formulierungen (Fuzzy-Logik). Ihre richtige (d.h. ” hier regelkonforme) Umsetzung in Programmiersprachen (ForTran, Pascal, C) ermöglicht dann Computersimulationen. Eigenschaften von Systemen • Begrenzung räumlich und zeitlich (Ausschnitt aus der Wirklichkeit, für einen bestimmten Vorhersagezeitraum; u.U. ist auch Unendlichkeit eine Grenze!) An den räumlichen Grenzen müssen Randbedingungen, am Beginn der Simulationszeit Anfangswerte vorgegeben sein. Die Komponenten des Systems sind abzählbar. • Beobachtbarkeit Ein System ist vollständig charakterisiert durch Sätze von INPUTs (Einwirkungen auf das System) und OUTPUTs (Systemreaktionen). • Separierbarkeit (Abstraktion) Die meisten der Einflüsse von außen können ignoriert werden. Die Vorgänge, die das System beschreibt, müssen unabhängig von denen sein, die es nicht beschreibt. (Trifft das für einen bestimmten Einfluß oder Vorgang nicht zu, muß das System erweitert werden!) • Nebenbemerkung (Übersichtlichkeit): Modelle für einen gewissen Zweck sollen nicht die Vorgänge enthalten, die mit diesem Modell nicht untersucht werden sollen. - 4 - A.3. Drei Grundaufgaben • Kausalität OUTPUT darf dem INPUT zeitlich nie vorangehen! INPUT - SYSTEM - OUTPUT (Einwirkung, Ursache) (Reaktion, Wirkung) INPUT und OUTPUT müssen durch eine plausible kausale Kette verknüpft sein, die durch den anerkannten Stand der Technik — mindestens jedoch durch den Stand der Forschung! — gestützt wird. Wo vom Ingenieurstandpunkt ein Kausalzusammenhang nicht gegeben ist, können kein System und kein Modell gebildet werden, die Simulation ist unmöglich. A.3 Drei Grundaufgaben Typ Analyse (direkt) Synthese (inverses Problem) Steuerung INPUT gegeben System INPUT INPUT OUTPUT gesucht OUTPUT Anmerkungen eindeutiges Ergebnis System System OUTPUT INPUT mehrdeutig (Auch Eichung eines direkten Problems) mehrdeutig - SYSTEM - OUTPUT Rückkopplung (Einwirkung, Ursache) (Reaktion, Wirkung) - 5 - KAPITEL A - Einführung A.4 Deduktion und Induktion A.4.1 Herleitung der Modelle über Deduktion • Gesetze und Prinzipien als gesicherte Basis: – Erhaltungssätze der Mechanik konzeptionelles Modell z.B. Widerstandsnetzwerk (nächstes Kapitel) – Newtons Gesetz – Kontinuität geben den Typ der zu lösenden Differentialgleichungen vor. • Die zu untersuchende Struktur mit – Beschreibung der Berandung und Komponententopologie – Art der Komponenten und Parameter bestimmt spezielle Terme der Gleichungen. • Aus den Zahlenwerten der Parameter resultieren schließlich die Koeffizienten der Gleichungen. • Durch Eichung von bisher nicht festgelegten Parametern kann eine verbesserte Übereinstimmung der Simulation mit dem beobachteten Systemverhalten erreicht werden und damit einhergehend auch meistens eine verbesserte Prognosefähigkeit. A.4.2 Herleitung der Modelle mittels Induktion • Daten sammeln: – Experimentieren, Messen, Beobachten von In- und Outputs • Empirische Formeln: empirisches Modell z.B. Klärwerkssimulation (Kapitel I) – Interpolation, Mustererkennung – Regressionsanalyse • Generalisierung: – Bestimmung der Charakteristika – Parameteridentifikation • Gebrauch: – Vergleich Modell und Beobachtung, Verbesserung des Modells – Prognose - 6 - A.4. Deduktion und Induktion A.4.3 Beispiel: Masse-Feder-System Die Differentialgleichung 6 H HH l0 HH H ? C 6 HHH z HH H ? z ? m C l0 z ~m Masse Federkonstante Federlänge (spannungsfrei) Anfangsauslenkung 0= X | {z Fz = mg |{z} } Gleichgewicht Erdanziehung − |{z} Cz − Hooke mz̈ |{z} Newton ist abgeleitet aus • Annahmen: kein Luftwiderstand masselose, linear elastische Feder • Kräftegleichgewicht und Newtons Gesetz, deduktiv • Hookeschem Gesetz und Konstanten, induktiv, empirisch • Randbedingungen: zt=0 = z, żt=0 = 0 Die Lösung mg mg + z− cos(ωt) z= C C s mit ω = C m stellt ein unter den getroffenen Annahmen äußerst zuverlässiges mathematisches Modell dar, da die Koeffizienten sehr genau bestimmbar sind. Verallgemeinerung Die Modellbildung erfolgt meist als Kombination aus • Deduktion, die den Aufgabentyp direkte Analyse mit eindeutiger Lösung verkörpert, • und Induktion, die auf ein nicht eindeutig lösbares inverses Problem führt. Die Datenbasis für diesen Teil deckt selten den gesamten zu untersuchenden Bereich ab und wird daher in der Regel extrapoliert. Folgerung: Je deduktiver ein Modell abgeleitet wurde, um so wertvoller ist es für Vorhersagen! - 7 - KAPITEL A - Einführung A.5 Das Spektrum von Modellen Modelle für: Elektrische Schaltkreise Dynamik Ökonomie Kernreaktoren Medizin Soziales Luftverschmutzung Statik Hydrologische Probleme Politik Verwendung zu: Konstruktion Erstellen von Szenarien Sicherheitsstudien Testen von Theorien Propaganda Optimierung Experimentieren - 8 - Kapitel B Netzwerke: Einführung - 9 - KAPITEL B - Netzwerke: Einführung Netzwerke kommen in vielen technischen Anwendungen vor. Beispiele sind Rohrleitungssysteme und verzweigte Gerinne, elektrische Schaltkreise und im weitergefaßten Sinn auch Fach- oder Rahmentragwerke. Zur Einführung wird hier ein Netzwerk aus Ohmschen Widerständen behandelt. Wenn auch für Bauingenieure kaum von praktischer Bedeutung, ist es sehr leicht zu verstehen. Die Gleichungen sind simpel (U = RI) und die Programmstrukturen sind im Prinzip für alle Arten von Netzwerken verwendbar. B.1 Lineares Widerstandsnetzwerk 4 -80 V 300 Ω - I04 0 | 1 | 50 Ω 1.6 A - I01 6 I20 6 200 Ω 500 Ω 100 Ω I31 - I21 2 | 2.0 A 3 340 V 200 Ω - I23 5 0V 500 Ω - I25 B.1.1 Modellannahmen • Die Widerstände seien konstant, ändern sich also nicht mit der Temperatur bzw. mit dem durchfließenden Strom. • Die Anschlußleitungen haben keinen Widerstand. • Stationäre Berechnung, zeitlich unveränderliche Randbedingungen. - 10 - B.1. Lineares Widerstandsnetzwerk B.1.2 Zur Problembeschreibung notwendige Daten • Systembeschreibung: Lage und Größe aller Widerstände. Da es auf Längen nicht ankommt, benötigt man für jeden Widerstand nur die Bezeichnungen der Anschlußpunkte. Diese werden (Netz-) Knoten genannt. Mit der Reihenfolge der beiden Knoten kann auch die positive Stromrichtung festgelegt werden. • Randbedingungen: Für mindestens einen Knoten das Potential (Spannung U gegenüber Null). An weiteren Knoten kann entweder das Potential oder eine von außen zufließende Stromstärke Iein vorgegeben werden. Die nachfolgenden Daten beschreiben das auf der vorigen Seite skizzierte Beispiel vollständig: WIDERSTANDSNETZWERK - BEISPIEL 0 4 300. Anfangsknoten, Endknoten, Widerstand 3 1 100. 2 0 200. 0 1 50. 2 5 500. 2 3 200. 2 1 500. -1 Endekennung (negative Knotennummern nicht erlaubt) 1 1.6 Knoten, Potential / Einspeisung 2 -2.0 3 340.0 4 -80.0 5 0.0 -1 Endekennung - 11 - KAPITEL B - Netzwerke: Einführung B.2 Zur Netzwerktopologie Man unterscheidet gestreckte, verzweigte und vermaschte Systeme: t t t t t t t t t gestreckt B.2.1 t t t @ t t t t t @ @t t t baumartig verzweigt t t t t t @ @ t t t t @t t @ @ @ @t @t t @ vermascht Knoten-, Element- und Maschenanzahl Von einem Startknoten ausgehend lassen sich die beiden linken Systeme dadurch erzeugen, daß an einen schon vorhandenen Anfangsknoten ein neues Element mit einem ebenfalls neuen Endknoten angefügt wird. Hier gilt also: (Knotenanzahl) n = 1 + m (Anzahl der Verbindungselemente) Hängt man zwischen schon bestehende Knoten solcher Systeme weitere Elemente ein, erhält man vermaschte Systeme. Jedes so eingefügte Element erzeugt eine neue Elementarmasche. In einem vermaschten System sind nicht alle Maschen (das sind geschlossene Wege durch das System) auch Elementarmaschen: yXX X XX XXX A x X X X XXX XXXX AA XXX yXX XXX A X X X X A XX K XX Xx A A A B A AA A A A A A A A C A A A A A AA A U A AA x x A - Nur zwei der drei geschlossenenen Wege A, B und C sind Elementarmaschen. Die erste davon kann beliebig gewählt werden. Aus der gewählten Masche ist nun eines ihrer Elemente wegzudenken. Danach bleibt nur eine weitere Masche übrig; welche das ist, hängt von dem entfernten Element ab. Allgemein gilt: n + e (Anzahl der Elementarmaschen) = 1 + m - 12 - (B.1) B.3. Aufgabenstellung – Lösungswege B.3 Aufgabenstellung – Lösungswege Zu berechnen sind: • Die n Potentiale oder Einspeisungen Iein aller Knoten. (Eine der beiden Größen ist als Randbedingung vorzugeben.) • Die m Ströme durch alle Verbindungselemente (Widerstände) • optional: m Spannungen und Verlustleistungen an den Widerständen B.3.1 Grundgleichungen zum Widerstandsnetzwerk An jedem Widerstand i − k gilt das Ohmsche Gesetz: ∆U Ui − Uk Iik = I ∗R (B.2) = Iik ∗ Rik = (Ui − Uk )/Rik (B.3) m Elementgleichungen An jedem Knoten i gilt die Kontinuitätsgleichung: Ieini = X Iik (B.4) (Ui − Uk )/Rik (B.5) k = X k n Knotengleichungen Die Summe der Spannungen auf jedem geschlossenen Weg (Masche) ist Null! e (B.6) (Elementar-)Maschengleichungen Hilfsmaschen: Die Summe der Spannungen auf jedem Weg zwischen zwei Knoten mit vorgegebenen Potentialen ist die Differenz dieser Potentiale! h Hilfsmaschengleichungen - 13 - (B.7) KAPITEL B - Netzwerke: Einführung B.3.2 Das element- und maschenorientierte Verfahren Als primäre Unbekannte werden die m Ströme Iik gewählt. Die Knotengleichungen (B.4) des eingangs skizzierten Netzwerks lauten: +1.0 0 −1.0 +1.0 0 0 0 0 −1.0 0 −1.0 0 0 −1.0 0 0 +1.0 0 +1.0 +1.0 +1.0 ∗ 0 +1.0 0 0 0 −1.0 0 −1.0 0 0 0 0 0 0 0 0 0 0 −1.0 0 0 Ak I0 4 I3 1 I2 0 I0 1 I2 5 I2 3 I2 1 I ein0 I ein1 I = ein2 I ein3 I ein4 Iein5 ∗ I =E (B.8) Die Matrix Ak , die die Richtungen der an den jeweiligen Knoten i angeschlossenen Elemente wiedergibt, ist einfach singulär. (Jede Zeile ist die negative Summe aller anderen.) Das bedeutet, daß mindestens eine der Zeilen nicht brauchbar ist. Weiter sind die Gleichungen derjenigen Knoten nicht benutzbar, an denen eine U -Randbedingung vorgegeben ist, weil dort der eingespeiste Strom nicht vorgegeben werden darf – die rechte Seite also unbekannt ist (Knoten 3, 4 und 5). Es stehen hier also nur die ersten drei Gleichungen zur Verfügung. Mit den Maschengleichungen (B.6),(B.7) der Elementarmaschen 0 − 2 − 3 − 1 − 0 und 2 − 3 − 1 − 2 bzw. der Hilfsmaschen 3 − 2 − 0 − 4 und 3 − 2 − 5 wird das Gleichungssystem zur Ermittlung der 7 unbekannten Ströme vervollständigt: Em. Hm. 0 R3 1 −R2 0 −R0 1 0 R2 3 0 0 R3 1 0 0 0 R2 3 −R2 1 R0 4 0 R2 0 0 0 −R2 3 0 0 0 0 0 R2 5 −R2 3 0 Am ∗ I0 4 I3 1 I2 0 I0 1 I2 5 I2 3 I2 1 0.0 0.0 = U −U 4 3 U3 − U5 ∗ I = ∆U (B.9) Das globale Gleichungssystem ist damit zahlenmäßig: 1.0 0.0 0.0 0.0 0.0 300.0 0.0 0.0 -1.0 0.0 100.0 100.0 0.0 0.0 -1.0 0.0 1.0 -200.0 0.0 200.0 0.0 1.0 -1.0 0.0 -50.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 0.0 200.0 0.0 200.0 0.0 -200.0 500.0 -200.0 0.0 -1.0 1.0 0.0 -500.0 0.0 0.0 ∗ A - 14 - I0 4 I3 1 I2 0 I0 1 I2 5 I2 3 I2 1 ∗ I = =B 0.0 1.6 -2.0 0.0 0.0 420.0 340.0 (B.10) B.3. Aufgabenstellung – Lösungswege Das unsymmetrische Gleichungssystem kann nun mit dem Gauss’schen Algorithmus aufgelöst werden. Die ungünstige Struktur der Koeffizientenmatrix A • Die Hauptdiagonalglieder überwiegen nicht, sind sogar teilweise Null! • Den Koeffizienten der Knotengleichungen mit dem Betrag 1.0 stehen in den Maschengleichungen die Zahlenwerte der Widerstände gegenüber. Es können daher leicht Größenordnungsunterschiede von 106 auftreten (Netzwerk mit MΩ-Widerständen). erfordert, daß eine Pivotsuche (mit Spalten und Zeilentausch) durchgeführt wird. In einem Nachlauf werden die Spannungen an den Widerständen berechnet sowie sukzessive die Potentiale Ui aller Knoten, ausgehend von den Knoten, an denen diese schon bekannt sind. Zur Kontrolle können die eingespeisten Ströme Ieini durch knotenweise Summation der Elementströme Iik ermittelt und ausgegeben werden. Das Verfahren ist wegen der nicht mit einfachem Schema durchführbaren Ermittlung der Elementar- und Hilfsmaschen sowie der unsymmetrischen Koeffizientenmatrix relativ aufwendig! B.3.3 Das knotenorientierte Verfahren Als primäre Unbekannte werden die n Potentiale Ui gewählt. Es werden die Knotengleichungen (B.5) benutzt, die durch Einsetzen der Elementgleichungen (B.3) in die Form (B.4) entstehen. P k L0k −L 10 −L20 0 −L40 0 −L01 P k L1k −L21 −L02 0 −L04 0 −L12 −L13 0 0 −L23 0 −L25 0 0 P k L2k −L31 −L32 0 0 0 L40 0 0 −L52 0 0 L52 P k L3k Iein0 I ein1 U0 U1 U Iein2 2 ∗ = U3 Iein3 U 4 I ein4 U 5 Iein5 mit den Leitfähigkeiten Lik = Lki = 1.0/Rik L ∗ U = E (B.11) zahlenmäßig (Beispiel wie oben): 0.0283 -0.020 -0.005 0.0 -0.0033 0.0 -0.020 0.032 -0.002 -0.010 0.0 0.0 -0.005 -0.002 0.014 -0.005 0.0 -0.002 0.0 -0.010 -0.005 0.015 0.0 0.0 -0.0033 0.0 0.0 0.0 0.0033 0.0 0.0 0.0 -0.002 0.0 0.0 0.002 ∗ U0 U1 U2 U3 U4 U5 = Iein0 Iein1 Iein2 Iein3 Iein4 Iein5 Die Koeffizientenmatrix L ist symmetrisch, ihre Hauptdigonalglieder sind positiv und die Zeilensummen sind Null. Sie ist aber noch singulär (alle Spaltensummen sind Null), was durch Einarbeiten von U -Randbedingungen beseitigt wird. - 15 - KAPITEL B - Netzwerke: Einführung B.3.3.1 Berücksichtigung der Randbedingungen Einspeisungen werden direkt in die rechte Seite eingespeichert. Die zu einer U -Randbedingung gehörende Spalte von A wird mit dieser ausmultipliziert und das Produkt von beiden Seiten des Gleichungssystems abgezogen. Die Spalte wird zu Null gesetzt. Einspeisungen werden direkt in die rechte Seite aufaddiert: zahlenmäßig 0.0283 -0.020 -0.020 0.032 -0.005 -0.002 0.0 -0.010 -0.0033 0.0 0.0 0.0 (Beispiel -0.005 -0.002 0.014 -0.005 0.0 -0.002 wie oben): 0.0 1.6 U0 -2.0 ∗ U1 = I ein3 U2 Iein4 Iein5 0.0 -0.010 -0.005 − 0.015 0.0 0.0 -0.0033 0.0 0.0 0.0 0.0 -0.002 0.0 0.0 0.0033 0.0 0.0 0.002 340.0 ∗ -80.0 0.0 Die letzten Zeilen des Systems sind unbrauchbar wegen der unbekannten Einspeisungen Ieinj . Um den Aufwand gering zu halten, kann für jeden Knoten j mit U -Randbedingung formal geschrieben werden: 1.0 ∗ Uj = vorgegebener Wert. Damit werden die nicht mehr benötigten Teile des Gleichungssystems überschrieben: 0.0283 -0.020 -0.005 0.0 0.0 0.0 -0.020 0.032 -0.002 0.0 0.0 0.0 -0.005 -0.002 0.014 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 ∗ U0 U1 U2 U3 U4 U5 -0.267 5.0 -0.3 = 340.0 -80.0 0.0 Das positiv definite und symmetrische System kann jetzt mit einem zweckmäßigen Algorithmus (z.B. nach Cholesky) aufgelöst werden. Danach sind alle Knotenpotentiale bekannt, in einem Nachlauf über alle Elemente werden anschließend alle gewünschten Zustandsgrößen an den Elementen berechnet. - 16 - B.4. Knoten- oder maschenorientiert? B.4 B.4.1 Knoten- oder maschenorientiert? Maschenorientiertes Verfahren – Vorteile • Dieses Verfahren bietet eventuell Vorteile bei weitverzweigten Systemen mit wenigen Maschen. • Das System kann verkleinert werden, in dem hintereinander liegende Elemente zu einem Ersatzelement zusammengefaßt werden – nur möglich, wenn keine Randbedingungen im Strang vorgegeben sind. Zweige, an deren einem Ende eine Einspeisung vorgegeben ist, dürfen entfernt werden. • Das Verfahren eignet sich für Handrechnung: Man wählt dazu als Elementarmaschen die mit den größten Leitfähigkeiten, entfernt dann daraus immer das Element mit dem größten Widerstand. Die mit diesem nun unvermaschten Hauptsystem berechenbare Startlösung kann nun durch Iteration der Maschengleichungen (Cross-Verfahren) verbessert werden. B.4.2 Vorteile des knotenorientierten Verfahrens • Schematischer, übersichtlicher Aufbau der Gleichungen ohne Maschenermittlung und Wahl eines Hauptsystems – besonders geeignet für die Programmierung! • Symmetrisches Gleichungssystem mit verringertem Speicherbedarf. • Unkomplizierte Nachlaufrechnung, da alle Eingangsgrößen dann schon bekannt sind. - 17 - frei für Notizen Kapitel C Nichtlineares Netzwerk: Rohrsysteme - 19 - KAPITEL C - Nichtlineares Netzwerk: Rohrsysteme C.1 Einleitung • Fernleitungen für Öl, Erdgas, Wasser, Kohle-Wasser, Sand-Wasser • Wasserversorgungsnetze, Abwasserpumpsysteme • Fernwärmesysteme • Verfahrenstechnische Anlagen - Chemie • Kühlkreisläufe in Kraftwerken • Riser für Erdöl, Erdgas (Meerestechnik) • Wasserkraftanlagen, insbesondere Hochdruckstollen C.1.1 Aufgaben Transport von flüssigen oder gasförmigen, z.T. auch festen Stoffen (z.B. Kohle in Wasser, Sand in Wasser) C.1.2 Elemente von Rohrsystemen • Rohrleitungen (Stahl, Beton, Kunststoffe) • Pumpen, Turbinen • Absperr- und Regelungssysteme (Klappen, Schieber, Drosseln, Ventile) • Rückschlagklappen, -ventile • Be- und Entlüftungsventile • Windkessel • Wasserschlösser • Krümmer • Übergangsteile - 20 - C.2. Stationäre Berechnung C.2 Stationäre Berechnung C.2.1 Hydraulische Grundlagen C.2.1.1 Rohrleitung Energielinie Drucklinie α Verlusthöhe hv v22 α 2g v12 2g p2 ρg p1 ρg z1 Energiehöhe: z2 piezometrische Druckhöhe h2 D Rohrachse geod. Bezugsniveau hE = z+ p v2 +α ρg 2g | {z } h piezometrische Druckhöhe: h z+ = p ρg v2 α 2g hE1 − hE2 ' h1 − h2 Druckhöhe: Geschwindigkeitshöhe: hv Verlusthöhe: p ρg = Rechengröße Überdruck p vernachlässigbar a) laminare Strömung wird durch ein lineares Widerstandsgesetz beschrieben: hv = 32 lν 128 lν v= Q 2 gD gπD4 kinematische Zähigkeit ν Re = vD < 2300 ν Reynoldszahl Re für - 21 - KAPITEL C - Nichtlineares Netzwerk: Rohrsysteme b) turbulente Strömung, Darcy-Weisbach 8 lQ2 l |v| l |Q| lv 2 =λ 2 5 =λ Q=λ Q 2gD gπ D 2gAD 2gA2 D 1 2.51 k/D 1 √ √ + ⇐ −2 log zum Iterieren von √ 3.71 λ Re λ λ 1 1 k + 1.14 ⇒ λ= Re → ∞ ⇒ √ = −2 log D λ (1.14 − 2 log (k/D))2 hv = h1 − h2 = λ (C.1) (C.2) (C.3) Wird λ unabhängig von Re, ist das Widerstandsgesetz streng quadratisch, sonst annähernd quadratisch. Gl. (C.3) gibt brauchbaren Startwert für Iteration (C.2) bei kleineren Re. c) turbulente Strömung, Hazen-Williams hv = 10.675 l Q1.852 cHW 1.852 D4.87 Wird in angelsächsischen Ländern für Wasserversorgungsleitungen verwendet. Von Material und Verkrustung abhängige Rohrrauhigkeitsbeiwerte cHW sind tabelliert. hv = KQn ; d) Allgemeine Gleichung: 1/n Q − s = khv √ mit K = 1/k n und k = 1/ n K = k|hv |1/n−1 hv = r(h1 − h2 ) | 2gA2 D r= λl |Q| 1/n Q = khv {z r s = 0 bei Rohrleitung } für Rohr nach Darcy-Weisbach und laminare Strömung mit λ = 64/Re (aus Umformung von Gl. (C.1)) n K √ k = 1/ n K 1 128νl gπD4 gπD4 128νl Darcy-Weisbach 2 8λl gπ 2 D5 Hazen-Williams 1.852 10.675 l cHW 1.852 D4.87 laminar - 22 - s gπ 2 D5 8λl C.2. Stationäre Berechnung Reibungsbeiwert λ nach Colebrook-White λ 0.07 k/D 6 3.310 −2 0.06 0.05 1.610 −2 0.04 8.310 −3 0.03 4.010 −3 2.010 −3 0.02 1.010 −3 4.010 −4 2.010 −4 1.010 −4 0.01 1| 2 {z 4 ∗103 6 8} 1| 2 {z 4 ∗104 6 8} 1| - laminar (Re < 2330): turbulent (Re > 2330): Wasser bei 20 o C: λ 1 √ λ ν = 2 {z 4 ∗105 Re = 6 8} 1| ∗10 64 Re 1.0*10−6 m2 /s - 23 - {z 4 6 vD ν k 2.51 √ + = −2 log Re λ 3.71 D = 2 ! 6 8 10} KAPITEL C - Nichtlineares Netzwerk: Rohrsysteme e) Verallgemeinertes Verbindungselement j mit Knoten i und k Elementfluß Qj > 0 , wenn von i nach k Knotenfluß Qik > 0 , wenn von i nach k Knotenfluß Qki > 0 , wenn von k nach i Qj = Qik = −Qki hvj = Kj |Qj |n−1 Qj = Rj Qj mit Rj = Kj |Qj |n−1 Qj = kj |hi − hk | n −1 (hi − hk ) Kj kj : : 1 Widerstand des Elements j; Leitwert des Elements j; Qik − sik = rik (hi − hk ) Kj kj r ik mit = Kik = Kki = 1/kjn p = kik = kki = 1/ n Kj = kj |hi − hk |1/n−1 = sik = 0 C.2.1.2 1 Kj |Qj |n−1 bei Rohrleitung Absperr- und Regelarmaturen (Drosseln, Klappen, Ventile, Schieber; auch lokale Verluste) Nenndurchmesser Dj und Querschnitt Aj konstant, unabhängig von der Schieberstellung! hvj = ζj n = 2; 8ζj ; gπ 2 Dj4 kj = πDj2 Kj = hvj = Kj |Qj |n−1 Qj = Rj Qj Qj = kj |hvj |1/n−1 hvj Qik − sik = rik (hi − hk ) bzw. vj 2 8ζj |Qj | ζj |Qj | = Qj = Qj 4 2 2g gπ Dj 2gA2j rik = 2gA2j ; ζj |Qj | mit sik = 0 r g ; 8ζj Rj = Kj |Qj | rik = kj |hi − hk |1/n−1 und sik = 0 aus Umformung von Gl. (C.4) Struktur der Gleichungen ist identisch mit denen der Rohrleitung. - 24 - (C.4) bei Verlusten C.2. Stationäre Berechnung C.2.1.3 Pumpen Fall a) vorgegebene konstante mechanische Leistung Pj : Pj = ρgQj ∆hEj hE = z + ∆hEj p v2 +α ρg 2g = (zk − zi ) + | (s. Skript Strö I, Kap. 8) {z klein } v 2 − vi2 p k − pi +α k ρg 2g | {z } sehr klein ' hk − hi = −hvj hvj = hi − hk = − n = −1 ; mit h = z + Pj ρg Qj Pj ; ρg (C.5) Kj = − kj = Kj = − hvj = Kj |Qj |n−1 Qj = Rj Qj Qj = kj |hvj |1/n−1 hvj Pj = − (hvj )−1 ρg ( Qik − sik = rik (hi − hk ) bzw. rik = − p ρg ρgQ2j ; Pj mit sik = 0 Pj ; ρg Rj = Kj / |Qj |2 rik = kj |hvj |1/n−1 sik = 0 (Pumpe mit konst. Leistung) aus Umformung von Gl. (C.5) Struktur der Gleichungen ist identisch mit denen der Rohrleitung. Bemerkungen: Der stets negative Koeffizient rik ist problematisch besonders für das knotenorientierte Verfahren. Es muß darauf geachtet werden, daß die Pumpe sich in einem vernünftigen“ ” Betriebszustand befindet, also nicht etwa durch ein Ventil abgedrosselt wird. Bei verschwindendem Durchfluß geht die mechanische Leistung jeder Pumpe gegen Null! - 25 - KAPITEL C - Nichtlineares Netzwerk: Rohrsysteme Fall b) vorgegebene Kennlinie: (vor allem Kreiselpumpen) Zur Illustration: Zwei gedachte Pumpensysteme Experimentell aufgenommene Kennlinien liegen meist graphisch vor. Sie können aus wenigen Kennlinienpunkten analytisch approximiert werden. Nullförderhöhe: In einem genügend hohen Standrohr stellt sie sich ohne Durchfluß ein. Der Durchfluß Q steigt bei sich verringernder Förderhöhe ∆h. Analytische Approximation: Neben der Nullförderhöhe h0 müssen mindestens zwei weitere Kennlinienpunkte (h1 |Q1 ) und (h2 |Q2 ) gegeben sein. Sind mehr als zwei gegeben, benutzt man die beiden dem aktuellen Betriebszustand zunächst liegenden Punkte für den folgenden Formelsatz. horizontale Tangente bei Q = 0 ! Ansatz: −hv = ∆h = h0 − cQd h0 − h1 = c Qd1 h0 − h2 = c Qd2 h 0 − h1 h 0 − h2 ; d = log h0 − h2 Q2 / log h0 − h1 Q1 Mit den nun bekannten Konstanten c und d folgt jetzt hvj = −∆hEj = hi − hk = −h0j + cj |Qj |d−1 Qj ; Qik − h0 c|Qik |d−1 = = (Q1 /Q2 )d (Division) und nach Einsetzen: 1 c|Qik |d−1 (hi − hk ) - 26 - Punkt 1 und 2 eingesetzt c= h0 − h1 h0 − h2 = d Q1 Qd2 C.2. Stationäre Berechnung Qik − sik = rik (hi − hk ) Qki + sik = rik (hk − hi ) mit rik = und sik 1 c|Qik |d−1 = h0 rik 6= 0 ! Struktur der Gleichungen ist identisch mit denen der Rohrleitung. C.2.1.4 Einfache Rohrsysteme mit Pumpe graphische Lösung: hgeo hv : : geodätische Förderhöhe Verlusthöhe (Ventil u. Rohrleitung) hv (Q) = l ζ +λ D Q2 2gA2 Q2 l +ζ D 2gA2 2 n f (Q) = KRohr Q + KP umpe Q + hgeo − h0 = 0 (nichtlineare Gleichung) numerische Lösung: gesucht Q so, daß h0 − KP umpe Qn = hgeo + λ Newton-Iteration nach dem µ-ten Iterationsschritt: f (Q) = 0 ; µ+1Q µQ = µ+1Q = µQ − µ − f ( Q) df µ ( Q) dQ KRohr µQ2 − KP umpe µQn + hgeo + h0 2KRohr µQ + nKP umpe µQn−1 - 27 - KAPITEL C - Nichtlineares Netzwerk: Rohrsysteme C.2.1.5 Topologie (Vergleiche auch Abschnitt B.2) Jedes Rohrsystem ist darstellbar als ein System von Knoten und knotenverbindenden Elementen (KVE), auch Elemente genannt. KVE sind Rohrleitungen, Armaturen, Pumpen etc. Typische Systemkonfigurationen: j j j j KVE in Reihe j j H HH H j j j @ @ j j @ @ @ @ j j HH H H j j @ @ @ @ @ @ j vermaschtes System (2 Maschen) baumartig verzweigtes System m = Zahl der Elemente, n = Zahl der Knoten, e = Zahl der Elementarmaschen verzweigtes System und Reihe: m = n − 1 vermaschtes System: m > n − 1 ; e = m − n + 1 An jedem Knoten ist eine externe Einspeisung (+) oder eine Entnahme (-) möglich: Knotenfluß Eine Masche ist ein beliebig geschlossener Weg innerhalb eines Netzes. Es gibt zwei Arten von Knoten: h-Knoten: Die Druckhöhe ist vorgegeben, der Knotenfluß errechnet sich aus den Systemgleichungen. j j Q-Knoten: Der Knotenfluß ist vorgegeben, die Druckhöhe errechnet sich aus den Systemgleichungen. - 28 - j C.2. Stationäre Berechnung Beispiel: vermaschtes System h-Knoten: 1 (h1 gegeben, E1 gesucht; z.B. Reservoir) Q-Knoten: 2, 3, 4, 5 (E gegeben, h gesucht) C.2.2 Gleichungssysteme C.2.2.1 Knoten- und Elementgleichungen 5 Knotengleichungen: ∗ E1 − Q1 E2 + Q1 − Q2 − Q3 E3 + Q2 − Q4 − Q5 E4 + Q3 + Q4 − Q6 E5 + Q5 + Q6 = = = = = 0 0 0 0 0 Durch Summation der 5 Knotengleichungen ergibt sich: E1 + E2 + E3 + E4 + E5 = 0 (Kontinuitätsgleichung des Gesamtsystems) 6 Elementgleichungen: h1 − h2 h2 − h3 h2 − h4 h3 − h4 h4 − h5 h3 − h5 = = = = = = ∗ K1 Q1 n K2 Q2 n K3 Q3 n K4 Q4 n K6 Q6 n K5 Q5 n 11 Gleichungen verfügbar für 11 Unbekannte: E1 , h2 . . . h5 , Q1 . . . Q5 ⇒ Nichtlineares Gleichungssystem für Drücke und Durchflüsse ∗ Randbedingungen: Unbekannte: h1 , E 2 − E 5 E1 , h2 − h5 ... ... normale Schrift fett gedruckt - 29 - KAPITEL C - Nichtlineares Netzwerk: Rohrsysteme C.2.2.2 Gleichungssysteme für Druckhöhen Elementgleichungen nach Q aufgelöst werden in Knotengleichungen eingesetzt: ∗ Q1 = k1 (h1 − h2 )1/n Q2 = k2 (h2 − h3 )1/n .. .. . = . Q6 = k6 (h4 − h5 )1/n 1: 2: 3: 4: 5: E1 − k1 (h1 − h2 )1/n E2 + k1 (h1 − h2 )1/n − k2 (h2 − h3 )1/n − k3 (h2 − h4 )1/n E3 + k2 (h2 − h3 )1/n − k4 (h3 − h4 )1/n − k5 (h3 − h5 )1/n E4 + k3 (h2 − h4 )1/n + k4 (h3 − h4 )1/n − k6 (h4 − h5 )1/n E5 + k5 (h3 − h5 )1/n + k6 (h4 − h5 )1/n = = = = = 0 0 0 0 0 5 nichtlineare Gleichungen mit 4 unbekannten Druckhöhen und 1 unbekannter Einspeisung E1 . Die Gleichungen 2 . . . 5 können für h2 . . . h5 gelöst werden. Danach ergibt sich E1 aus der ersten Gleichung. C.2.2.3 Gleichungssysteme für Durchflüsse 5 Kontinuitätsgleichungen der Knoten 2 Maschengleichungen 7 unbekannte Durchflüsse Maschengleichungen (Druckverluste):∗ Masche 1: Masche 2: K2 Qn2 + K4 Qn4 − K3 Qn3 = 0 K5 Qn5 − K6 Qn6 − K4 Qn4 = 0 Kontinuitätsgleichungen:∗ 3: 4: 5: 6: 7: E1 − Q1 E2 + Q1 − Q2 − Q3 E3 + Q2 − Q4 − Q5 E4 + Q3 + Q4 − Q6 E5 + Q5 + Q6 = = = = = 0 0 0 0 0 7 Gleichungen für 7 unbekannte Durchflüsse. (E1 und Q1 . . . Q6 ) ∗ Randbedingungen: Unbekannte: h1 , E 2 − E 5 E1 , h2 − h5 ... ... normale Schrift fett gedruckt - 30 - C.2. Stationäre Berechnung Wahl der Maschen: 2 7 9 unbekannte Knotenflüsse unbekannte Durchflüsse gesuchte Größen 6 3 9 Knotengleichungen Maschengleichungen Gleichungen Sind im System kH h-Knoten, so sind kH − 1 zusätzliche Maschen durch h-Knoten zu legen. Wegen der Wahl der Maschen siehe Abschnitt B.4.1. Mögliche Maschenkonfigurationen: Maschen: a) 2 3 1 b) 2 3 1 3 4 4 5 2 3 5 2 3 5 4 3 - 31 - 2 3 6 4 1 2 3 6 1 KAPITEL C - Nichtlineares Netzwerk: Rohrsysteme C.2.3 C.2.3.1 Iterationsalgorithmen Knotenbezogenes Einzelschrittverfahren Einfachstes Verfahren mit schlechtem Konvergenzverhalten und für große Systeme unbrauchbar. Nicht näher behandelt. C.2.3.2 Maschenbezogenes Einzelschrittverfahren Das Iterationsverfahren nach Cross war zu Zeiten der Handrechnung das meistbenutzte und ist auch in viele Computerprogramme integriert worden. Das Konvergenzverhalten ist mäßig. Nicht näher behandelt. C.2.3.3 Maschenbezogenes Gesamtschrittverfahren Wird relativ wenig eingesetzt, weil der Aufbau der Gleichungen unübersichtlicher als beim knotenbezogenen Gesamtschrittverfahren ist. Die Konvergenz ist zudem von der Maschenwahl abhängig. Siehe auch Abschnitt B.3.2. - 32 - C.2. Stationäre Berechnung C.2.3.4 Knotenbezogenes Gesamtschrittverfahren Linearisierte Elementgleichung: Qik − sik = µkik µ|hi − hk |1/n−1 · µ+1 (hi − hk ) = µrik · µ+1 (hi − hk ) Qik = −Qki Qki + sik = − µrik · µ+1 (hi − hk ) µ µ+1 : bekannt, letzter Iterationsschritt : gesucht, aktueller Iterationsschritt rik ist abhängig von der Verlusthöhe hv = hi − hk , die während der Iteration entnommen werden kann aus dem Vektor µh aller Druckhöhen des vorangegangenen Iterationsschrittes. Alternativ läßt sich rik auch aus dem Durchfluß µQik berechnen. Somit wird rik innerhalb eines Iterationsschrittes als Konstante behandelt, die Elementgleichung ist damit linear. Elementmatrizen: " Qik − sik Qki + sik µ" # = rik −rik −rik rik µ+1" # · hi hk # Knotengleichungen: N X Qij = Ei ; Qij = 0 , wenn Element i − j nicht existiert j=1 a) lineares Problem, vergleiche Abschnitt B.3.3 (1) Aufbau des Gleichungssystems: (N Gleichungen für N Unbekannte) Beginne mit leerer Matrix N ×N . Speichere elementweise ab, indem für jedes Element i−k rik zur Hauptdiagonalen i, i und k, k hinzuaddiert wird. Außerdem −rik zur Position i, k und k, i. Auf der rechten Seite entsteht analog der Vektor E aus den sik (nur bei Pumpen) und den vorgegebenen Einspeisungen Êi . Ergebnis: L h = E L ist die Systemmatrix. Für sie gilt: Lii = P rik (Diagonalelemente) rik 6= 0, wenn Element i − k existiert. Alle Lii sind positiv. Lik = −rik für i 6= k sofern Element i − k existiert. Lik = 0 für i 6= k wenn das Element i − k nicht existiert. - 33 - KAPITEL C - Nichtlineares Netzwerk: Rohrsysteme |Lii | ≥ |Lik | für alle i, k = 1 (1) N Der größte Wert innerhalb einer Zeile liegt auf der Hauptdiagonalen. L ist positiv definit und 1-fach singulär. Lik = −rik für i 6= k Lki = −rik L ist symmetrisch, da Element i − k im Gesamtsystem: 1 2 3 .. . i .. . k .. . N 1 2 3 ... i 0 0 0 ... 0 0 0 0 ... 0 0 0 0 ... 0 .. .. .. .. . . . . 0 0 0 . . . rik .. .. .. .. . . . . 0 0 0 . . . −rik .. .. .. .. . . . . ... ... ... ... 0 0 0 ... ... 0 1 2 3 .. . i .. . k .. . N 2 3 r11 −r12 −r13 P −r21 r22 −r23 P −r31 −r32 r33 .. .. .. . . . −ri1 −ri2 −ri3 .. .. .. . . . −rk1 −rk2 −rk3 .. .. .. . . . P −rN 1 −rN 2 . . . N h1 ... 0 . . . 0 h2 ... 0 h3 . .. . .. h . . . −rik . . . 0 i .. .. .. . . . . . . rik . . . 0 hk .. .. . . . .. Zusammenbau zum Gesamtsystem: 1 k 0 0 0 .. . −rN 3 0 ... 0 PN k=1 Qik hN 0 0 0 .. . = Qik .. . Qki . . . 0 = Ei ... i ... k ... N . . . −r1i . . . −r1k . . . −r1N . . . −r2i . . . −r2k . . . −r2N . . . −r3i . . . −r3k . . . −r3N .. .. .. . . . rii . . . −rik . . . −riN .. .. .. . . . P . . . −rki . . . rkk . . . −rkN .. .. .. . . . P . . . −rN i . . . −rN k . . . rN N ... P h1 h2 h3 .. . - 34 - E1 E2 E3 .. . hk .. . = Ei .. . Ek . . . hn En hi .. . · L h = E C.2. Stationäre Berechnung Wegen der Symmetrie brauchen für ein N × N System nur N (N + 1) /2 Koeffizienten gespeichert zu werden, z.B. N = 100 ⇒ 5050 statt 10000. L ist eine Bandmatrix mit einer Bandbreite B < N und Lik = 0 für |k − i| ≥ B. Für N = 100 und B = 20 z.B. 2000 Koeffizienten. Die Bandbreite errechnet sich aus der maximalen Knotennummerndifferenz für ein Element. Die Bandbreite hängt also von Systemstruktur und Knotennumerierung ab. (2) Nebenbedingungen: ist Ei gegeben (auch Ei = 0 ist ein gegebener Wert! ), so wird Ei in Zeile i des Spaltenvektors E eingespeichert. Ist hk gegeben, so wird die Zeile k gestrichen und damit auch hk . Die auf der linken Seite befindlichen Produkte Lik hk (i = 1 . . . N ) werden auf die rechte Seite gebracht. Beispiel: L11 h1 + L12 h2 + L13 h3 = E1 L21 h1 + L22 h2 + L23 h3 = E2 L31 h1 + L32 h2 + L33 h3 = E3 h2 = ĥ2 sei gegeben (Randbedingung): L11 h1 + L13 h3 = E1 − L12 ĥ2 L31 h1 + L33 h3 = E3 − L32 ĥ2 Dabei wird die Zahl der Gleichungen um so viele reduziert, wie es Knoten mit bekanntem ĥi gibt. Der Nachteil des Verfahrens ist die damit verbundene Umnumerierung des Gleichungssystems. Deshalb ist es günstiger, bei Systemen, die nur wenige Knoten mit bekanntem h enthalten, die k-te Zeile durch die Gleichung 1.0 ∗ hk = ĥk zu ersetzen. Die Zahl der Gleichungen bleibt dabei erhalten. Beispiel: L11 h1 + 0 +L13 h3 = E1 − L12 ĥ2 0 + h2 + 0 = hˆ2 L31 h1 + 0 +L33 h3 = E3 − L32 ĥ2 möglich wäre auch: L11 h1 + L12 h2 +L13 h3 = E1 0+ h2 +0 = ĥ2 L31 h1 + L32 h2 +L33 h3 = E3 dann bleibt jedoch die Matrix nicht symmetrisch! - 35 - KAPITEL C - Nichtlineares Netzwerk: Rohrsysteme (3) Berechnung der Durchflüsse und Einspeisungen: für alle Elemente gilt: Qik = rik (hi − hk ) für alle Knoten mit unbekanntem E gilt: Ei = N X Qij sofern Element ij existiert. j=1 b) nichtlineares Problem mit Picard-Iteration L (h) h = E Schätze Startwerte für Iteration - Berechne µ rik für alle Elemente Berechne µ+1hi aus Gleichungssystem Berechne µ+1Qj für alle Elemente Berechne µ+1Ei für alle Knoten Prüfe Konvergenz Prüfung der Konvergenz: |µQik − µ−1Qik | ≤ ε für alle Elemente z.B. mit ε = 0.001 Max{|Ei |, |Qj |} oder 1 N P P Ei − N j=1 Qij ≤ ε z.B. mit Fehler ε = 0.0001 m3 /s Konvergenzverhalten: Zu hohe Durchflüsse ergeben einen höheren Widerstand und damit im nächsten Iterationsschritt zu kleine Durchflüsse – alternierende Annäherung. Die Iteration wird beschleunigt, wenn man ab dem zweiten Iterationschritt die Verbesserung der Durchflüsse mit einem Relaxationsfaktor Fr < 1.0 abschwächt: µ+1 Qj ⇐ µ = µ Qj (1 − Fr ) + µ+1 Qj Fr Qj + δQj Fr - 36 - C.2. Stationäre Berechnung Zu den Startwerten: Für übersichtliche Systeme läßt sich der Vektor h schätzen. Das ist keine computergeeignete Methode! Die Geschwindigkeit in technischen Rohrsystemen liegt aber immer in der Größenordnung |v| = 1 m/s, womit sich die rik auch berechnen lassen – besser geeignet für alle Elemente j. ; |vj | = 1m/s |Qj | = |vj | Aj = Aj · 1.00 m/s Für die Berechnung der rik benutzt man dann Beweis: rik = kik |hi − hk |1/n−1 |Qik | = rik |hi − hk | n rik = kik |Qik |1−n rik rik 1/n rik = kik |Qik /rik |1/n−1 = kik |Qik |1/n−1 = kik n |Qik |1−n (unabhängig von der Richtung des Durchflusses!) c) Verbesserung der Genauigkeit Wenn das globale Gleichungssystem nicht für die piezometrischen Druckhöhen µ+1h sondern für ihre Verbesserungen δh = µ+1h − µh gelöst wird, werden die sich nicht mehr ändernden führenden Stellen von h nicht durch den Algorithmus geschleppt und so die Genauigkeit gesteigert. L· µ+1 h = E ⇒ L · δh = E − L · µh Die Umstellung kann auch auf Elementebene erfolgen. ˆ i = ĥi − µ hi Modifizierte Randbedingungen beachten: δh d) nichtlineares Problem mit Newton-Raphson-Iteration Nicht näher behandelt, jedoch Anmerkungen: Die Verbesserungen δh berechnen sich mit Hilfe einer Gradientenmatrix L0 (Ableitungen der rik nach hi und hk ). Bei einem gut geschätzten Anfangszustand ist schnellere Konvergenz als nach b) zu erwarten. Der numerische Aufwand ist jedoch höher und das Verfahren ist nicht unbedingt robust. Bei einer schlecht gewählten Startlösung kann es vorkommen, daß das Verfahren nicht konvergiert. - 37 - KAPITEL C - Nichtlineares Netzwerk: Rohrsysteme C.3 Lernziele Wesentliche Überlegungen für die Berechnung von nichtlinearen Netzwerken sind: • Das knotenorientierte Verfahren ist übersichtlicher als das maschenorientierte. Vor allem entfällt dabei die Wahl eines Hauptsystems. • Man wählt als Unbekannte an den Knoten diejenige Größe, die an allen am Knoten anschließenden Elementenden den gleichen Wert besitzen muß (hier h) =⇒ Erfüllung der Stetigkeitsbedingungen. • Innerhalb der Elemente wird der Zusammenhang von Knotengrößen und den Unbekannten am Element (hier Q) hergestellt. Die Elementgleichungen lassen sich auch für ganz verschiedene Elementtypen auf gleiche Form bringen. • Durch Addition der Elementgleichungen wird ein globales Gleichungssystem erzeugt, das an allen P Knoten ein Gleichgewicht herstellt (hier: Erfüllung der Kontinuitätsbedingungen j Qkj = Ek ). • Da in die Elementgleichungen immer nur Differenzen der Knotenunbekannten eingehen, ist das globale Gleichungssystem singulär. Die Singularität wird durch Vorgabe mindestens einer Knotenunbekannten beseitigt. • Das nichtlineare Problem wird gelöst durch Linearisierung und Iteration. Einfachstes Verfahren: Picard-Iteration (Einsetzen der Werte aus dem vorangehenden Schritt). Iteration nach Newton-Raphson konvergiert meist erheblich schneller — dafür sind aber alle Elementgleichungen nach den Unbekannten abzuleiten. • Man kann nie gleichzeitig am gleichen Knoten die Knotenunbekannte (hi ) und die Größe auf der Rechten Seite (Ei ) vorgeben! Das würde das Gleichungssystem überbestimmen und meistens auch einen Widerspruch erzeugen. - 38 - C.4. Anhang: SRS - Programmbeschreibung C.4 Anhang: SRS - Programmbeschreibung Das Programm Stationäre RohrStrömung läuft nach dem gleichen Schema ab, wie es in fast allen Finite-Element-Codes benutzt wird. Deshalb wird die Beschreibung in diesem Anhang beispielhaft und detailliert wiedergegeben. C.4.1 Eingabebeschreibung An Daten sind einzulesen und während des Programmlaufs vorzuhalten: • Koordinaten der Knoten • Beschreibung der Elemente, mit −→ Verknüpfung zu den Knoten- und Materialdaten • Randbedingungen −→ vorgegebene Werte im Vektor der Unbekannten • Belastungsglieder −→ Rechte Seite • (Bei instationären Aufgabenstellungen muß noch der Anfangszustand zur Zeit t = t0 vollständig beschrieben werden) Nach Aufruf von SRS öffnet das Programm das graphische User-Interface (GUI) und man kann eine Eingabedatei auswählen. (Die Daten von Datei in Tabellenform einzulesen ist bei den oft weitverzweigten Rohrleitungssystemen weniger umständlich als das System mit Hilfe einer graphischen Oberfläche zu generieren.) Der Name der Ausgabedatei ist immer SRS.OUT. Die Eingabedatei muß enthalten: (vergleiche auch ROHR1.DAT) (Alle Angaben in [m], [m WS], [s]) a) Überschrift zum Datensatz in der ersten Zeile, Angaben zum berechneten System, Variante, Lastfall u.s.w. b) Beschreibung des Systems; dabei beachten: Die weiteren Daten bestehen nur aus Zahlen, formatfrei, durch Leerzeichen (nicht Komma!) getrennt. Mehrere gleichartige Sätze der Eingabe stehen je einer auf einer Zeile, den Abschluß bildet eine Zeile mit -1 am Anfang. (Das erste Item jeder Zeile ist stets > 0, das Programm kann also erkennen, wann ein Abschnitt beendet ist und die Anzahl Zeilen selbst zählen.) Hinter den Zahlen kann beliebiger Kommentartext stehen. Die gesamte Eingabe wird während des Lesens im Command-Window protokolliert. 1. Knotenbeschreibungen Daten i xi yi zi : : -1 Erläuterung Knotennummern i mit Koordinaten. x und y sind i.a. nur für Plots relevant, z ist geod. Höhe. (Nummern i von 1 bis N, in beliebiger Folge) Ende der Koordinaten, siehe oben - 39 - KAPITEL C - Nichtlineares Netzwerk: Rohrsysteme 2. Elementbeschreibungen mit vier möglichen Typen: 1 = Rohr, 2 = Verlust, 3 = Pumpe und 4 = VRohr (Rohr mit Ein- und Auslaufverlusten)∗ . Eingabe der Elementtypen ist in beliebiger Reihenfolge erlaubt. Daten 1 i k D ks l : : : : Erläuterung 1 am Anfang: Rohr von Knoten i nach k D hydraulischer Durchmesser, ks äquivalente Sandrauhigkeit l Länge des Rohrelements; wird nur aus Koordinaten berechnet, wenn ≤ 0.0 ! 2i k D ζ : : 2 am Anfang: Verlust zwischen Knoten i und k D hydraulischer Durchmesser, ζ Verlustbeiwert 3 i k D h0 : Q1 h1 Q2 h2 : : -1 : 3 am Anfang: Pumpe zwischen Knoten i und k D hydraulischer Durchmesser, h0 Nullförderhöhe 1. Kennlinienpunkt 2. Kennlinienpunkt (mindestens 2 Punkte!) ggf. weitere Kennlinienpunkte, nach aufsteigendem Durchfluß Qj sortiert, hj sind hier Förderhöhen. Abschluß der Kennlinie 4 i k D ks l ζi ζk : : : : 4 am Anfang: Rohr mit Verlusten von Knoten i nach k D, l, ks wie oben bei Rohr ζi Ein- bzw. Auslaufverlust am Anfangsknoten i ζk Aus- bzw. Einlaufverlust am Endknoten k -1 Ende aller Elemente c) Randbedingungen für die Knoten; es kann nur Ei oder hi vorgegeben werden. 1. vorgegebene Druckhöhen hi Daten i hi : -1 Erläuterung Knotennummer und vorgegebene Druckhöhe für alle Knoten mit h-Randbedingung Ende der h-Randbedingungen 2. vorgegebene Einspeisungen Ei Daten i Ei : -1 ∗ Erläuterung Knotennummer und vorgegebene Einspeisung Nicht aufgeführte Knoten erhalten automatisch Ei = 0.0 Ende der E-Randbedingungen In der zu Übungszwecken herausgegebenen Fassung sind nicht alle Verbindungselemente vollständig implementiert. - 40 - C.4. Anhang: SRS - Programmbeschreibung Datensatz ROHR1 BEISPIEL ROHRSCHLEIFE EINFACH 1 0 0 190. % Knoten, x, y, z 2 100 50 170. 3 100 -50 170. 4 200 0 150. -1 % Ende Koordinaten 1 1 2 .5 .02 2000. % Verbindungselemente: Typ, i, k, Dh, Ks, L 1 1 3 .5 .02 2000. % ( hier alles Rohre) 1 2 3 .2 .01 500. 1 2 4 .5 .02 2000. 1 3 4 .5 .02 2000. -1 % Ende der Elementbeschreibungen 1 190. % H-Randbedingungen: i, H [m WS] 4 150. -1 % Ende H-Rdb. 2 .050 % E-Randbedingungen i, E 3 .050 -1 % Ende der Einspeisungen, Ende Datensatz C.4.2 Speicherplan zu SRS C.4.2.1 Allgemeine Angaben Durch die Vereinbarung am Beginn des Hauptprogramms global rnue g werden die Variablen ν (Zähigkeit von Wasser) und g (Erdbeschleunigung) als global deklariert und stehen nach entsprechender Vorbelegung allen Unterprogrammen einheitlich zur Verfügung. Weitere Parameter wie Dichte ρ, geforderte relative Genauigkeit und maximale Iterationsanzahl werden nur lokal im Hauptprogramm benötigt und sind dort zu Beginn mit Werten vorbelegt. C.4.2.2 Eingabedaten Mit dem Aufruf des Einleseprogramms [N, M, Nh, KOOR, ELE, PKenn, HRAND, Resei1, ofile] = srsein(0); werden alle Daten der Eingabe dem Hauptprogramm geordnet übergeben. (Der Parameter 0 ist bedeutungslos; er dient nur dazu, daß srsein überhaupt als Funktion erkannt wird.) - 41 - KAPITEL C - Nichtlineares Netzwerk: Rohrsysteme N int 1 Anzahl der Knoten M int 1 Anzahl der Verbindungselemente Nh int 1 Anzahl Knoten mit h-Randbedingungen KOOR double N×3 x-, y-, und z-Koordinaten aller Knoten ELE double M×9 Typ, i, j und Elementwerte aller Verbindungselemente, siehe unten PKenn double 1×(?) Hilfsvektor für alle Pumpen, mit Kennlinienpunkten, siehe unten HRAND double Nh×2 i, hi für alle Knoten mit h-Randbedingung Resei1 double N×1 Spaltenvektor der E-Randbedingung aller Knoten 0 an Knoten ohne Vorgabe) ofile file - geöffnete Ausgabedatei Anmerkungen zu ELE und Pkenn: Für das Verbindungselement e findet man in Ort Rohr Verlust Pumpe VRohr ELE(e,1) ELE(e,2) ELE(e,3) ELE(e,4) ELE(e,5) ELE(e,6) ELE(e,7) ELE(e,8) ELE(e,9) 1 i k D A ks l -1 -1 2 i k D A ζ -1 -1 -1 3 i k D A h0 ip ipe -1 4 i k D A ks l ζi ζk Kommentar Typ Anfangs- und Endknoten hydraulischer Durchmesser Querschnitt, berechnet Werte je nach Elementtyp ” ” ” Beim Elementtyp Pumpe ist in ELE(e,7) der Index ip gespeichert, der auf die zugehörige Kennlinie zeigt. In ELE(e,8) steht ein weiterer Zeiger ipe, der auf den letzten Q-Wert der Kennlinie zeigt. Diese Listenkonstruktion ermöglicht es, Kennlinien mit unterschiedlicher Anzahl von Punkten kompakt zu speichern. Beispielsweise sei PKENN ab Index 10 frei und eine neue Pumpe mit drei Kennlinienpunkten wird eingelesen. Die zugehörige Kennfeld wird dann so belegt: (ELE(e,7)=ip=10, zeigt auf Q1 ; ELE(e,8)=ipe=14 zeigt auf letzten Durchfluß Q3 ) Ort Inhalt PKENN(10) PKENN(11) PKENN(12) PKENN(13) PKENN(14) PKENN(15) PKENN(16) Q1 h1 Q2 h2 Q3 h3 — C.4.3 Erläuterung (hierhin zeigt ip) Durchfluß und Druckerhöhung Punkt 1 dito Punkt 2 dito (hierhin zeigt ipe) Punkt 3 frei für nächste Kennlinie Kurzbeschreibung einiger Unterprogramme Neben dem oben beschriebenen Leseprogram srsein sind noch erforderlich: (mit Aufrufen, Ergebnisse links) - 42 - C.4. Anhang: SRS - Programmbeschreibung • Elementprogramme, speziell für SRS function rik = Rohr(j,qabs,ELE) function rik = Zeta(j,qabs,ELE) function [rik,sik] = Pump(j,qabs,ELE,PKenn) function rik = Vrohr(j,qabs,ELE) % Berechnung Rik, (Sik) der Verbindungselemente Parameter j qabs ELE PKenn rik sik Erläuterung Elementnummer (Zeile in ELE) | Qj | im Element (letzte Iteration) Elementverzeichnis (siehe oben) Kennlinienfeld für Pumpen (siehe oben) Resultat: linearisierter Koeffizient rik Resultat: (nur PUMP.M) Term für rechte Seite sik % Hilfsprogramm fuer Rohrelement % berechnet den Reibungsbeiwert Lambda nach dem Moody-Diagramm % mit Interpolation im Uebergangsbereich function Lambda = lambda (kd, Re)} \hfill Parameter kd Re Lambda Erläuterung ks /D Sandrauhigkeit / Durchmesser Reynoldszahl Ergebnis: Reibungsbeiwert λ Berechnet für Re < 2200 : λ = 64/Re (laminarer Beiwert), für Re > 3000 : Beiwert nach Coolebrook-White. Bei Reynoldszahlen dazwischen wird linear interpoliert. • Graphische Ausgabe, speziell für SRS function srsplot(N,M,KOOR,ELE,Hk,Ek,Qj) % srsplot zeichnet System und Ergebnisse in 3-d-Darstellung % N Knoten und M Elemente % KOOR (N*3) : Koordinaten % ELE (M*7) : ELE(j,2) und ELE(j,3) sind die Knotennummern % Hk (N) : berechnete Druckhoehen % Ek (N) : Einspeisungen in die Knoten % Qj (M) : Durchfluesse % zu SRS, Ratke 2000 Diese ergebnislose Routine stellt den berechneten stationären Zustand dreidimensional dar. (ohne weitere Erläuterung) - 43 - KAPITEL C - Nichtlineares Netzwerk: Rohrsysteme C.4.4 Includefile für den Gleichungslöser • Die Lösung linearer Gleichungssysteme ist oft eine der zentralen Aufgaben von Programmen zur Simulation natürlicher oder technischer Systeme. Die Koeffizientenmatrizen können sehr unterschiedliche Eigenschaften besitzen bezüglich Symmetrie, Größe, Struktur, Grad der Besetzung und Konditionszahl. Die Auswahl des Lösers (Gauß mit oder ohne Pivotsuche, Cholesky, iterative Verfahren) sollte sich daran orientieren und bei veränderten Anforderungen muß der Löser leicht ausgetauscht werden können. Es empfiehlt sich, die zugehörigen Routinen (gut ausgetestet!) austauschbar als Bibliotheksfunktionen vorzuhalten. SRS: Zur Zeit wird der in MatLab implementierte \-Operator verwendet, der auf dem Gaußschen Algorithmus beruht (bei voll abgespeicherter Koeffizientenmatrix). Da die Matrizen symmetrisch und positiv definit sind, empfiehlt sich mindestens das Verfahren nach Cholesky mit Dreiecksspeicherung – benötigt nur den halben Speicherplatz, ist schneller und genauer. Praxisnahe Systeme enthalten oft mit einige Hunderte oder Tausende von Knoten. Dann ist der Übergang zu Skyline-Speicherung oder Sparse-Techniken angeraten. Denn die Koeffizientenmatrix ist stets dünn besetzt und die letztgenannten Methoden ersparen nicht nur einen Großteil der Rechenzeit, sondern machen es überhaupt erst möglich, Probleme von einer höheren Größenordnung zu bearbeiten. Näheres wird im nächsten Kapitel ausgeführt. - 44 - Kapitel D Handwerkszeug I: Lineare Gleichungssysteme - 45 - KAPITEL D - Lineare Gleichungssysteme D.1 Generelles Vorgehen D.1.1 Staffeln der Koeffizientenmatrix Die m×m Matrix A wird in das Produkt A = U ·O zerlegt. (U ist untere und O obere Dreiecksmatrix, d.h. uik = oki = 0 für i < k.) Für die Diagonalelemente uii bzw. oii müssen noch spezielle Konventionen getroffen werden. D.1.2 Lösung von A · x = r zerfällt dann in die einfachen Teilaufgaben und D.1.3 U ·y = r (Vorwärtseinsetzen, y ist gestaffelte Form von r) O·x = y (Rückwärtseinsetzen). Zeitaufwand Die Zerlegung von A in U · O kostet Zeit proportional zu m3 ; es sind m · m Koeffizienten zu berechnen und die dazu erforderlichen Skalarprodukte werden mit zunehmendem m ebenfalls länger. Wenn mehrere rechte Seiten r vorliegen, wird die Zerlegung deshalb nur einmal vor der Ermittlung der zugehörigen Lösungen durchgeführt. - 46 - D.2. Gaußsches Verfahren D.2 Gaußsches Verfahren Die Formeln hierzu sind aus der Matrizenmultiplikation herleitbar. Da die Zerlegung nicht eindeutig ist, wird gesetzt: oii = 1 (Gauss) 1 1 j ? 1 ∅ j- Formeln: O 1 aik = 1 1 A uij m ? U (D.1) Für die Dreiecksmatrizen wird k i uij ojk . j=1 - ∅ m X = 0 für j > i, ojk = 0 für j > k, m aik = also i X uij ojk für i ≤ k, (D.2) uij ojk für i ≥ k. (D.3) j=1 aik = k X j=1 Aus (D.2) folgt aik = i−1 X j=1 uij ojk + uii oik ; oik = aik − i−1 X j=1 - 47 - uij ojk /uii für i < k KAPITEL D - Lineare Gleichungssysteme und aus (D.3) aik = k−1 X uij ojk + uik okk mit okk = 1 ; uik = aik − k−1 X uij ojk für i ≥ k j=1 j=1 Formeln für die rechte Seite: (Gauß und andere Formen der Dreieckszerlegung, z.B. Cholesky) ri = i X uij yj ; analog zu Gl. (D.2) yi = ri − j=1 yi = m X i−1 X uij yj /uii (Staffeln) j=1 oij xj ; wegen oii = 1 und oij = 0 für j < i j=1 ; yi = m X oij xj + xi ; j=i+1 xi = yi − m X oij xj j=i+1 (Diese letzte Formel gilt wegen oii = 1 nur für Gauß.) Schlecht konditionierte Matrizen Falls sich sehr kleine uii ergeben (oder gar uii = 0 !), sind die oik nur ungenau bzw. nicht berechenbar. Es muß dann eine Pivot-Suche durchgeführt werden, bei der die Zeilen von A und die von r vertauscht werden. Das Verfahren ist dann nicht mehr mit Trennung der Einzelschritte (Behandlung von A und r) durchführbar! - 48 - D.3. Cholesky-Verfahren D.3 Cholesky-Verfahren A sei symmetrisch und positiv-definit. Dann läßt sich A so zerlegen, daß gilt d.h. U = O T , also A = O T · O. uik = oki , Es braucht also nur die halbe Matrix bearbeitet zu werden! Formeln: aus (D.2): oik = aik − i−1 X oji ojk /oii ; für i < k (D.4) j=1 und oii oii = aii − i−1 X oji oji ; für i = k ; j=1 j=1 Rechte Seite: yi = ri − i−1 X oji yj /oii (Staffeln) j=1 xi = yi − v u i−1 X u o2ji oii = taii − m X oij xj /oii (Lösen) j=i+1 - 49 - (D.5) KAPITEL D - Lineare Gleichungssysteme D.3.1 Effiziente Speicherung von A und O D.3.1.1 Dreiecksmatrizen für Cholesky-Verfahren Da aik = aki und uik = oki , müssen nur Elemente auf und oberhalb der Diagonalen gespeichert werden. Für die Elemente oii wird 1/oii abgespeichert (weil stets die Kehrwerte benötigt werden). Speicherung der aik bzw. oik in einem eindimensionalen Feld A(·): k= 1 2 3 4 5 6 i = 1 (1) (2) (4) (7) (11) (16) 2 (3) (5) (8) (12) (17) 3 (6) (9) (13) (18) 4 (10) (14) (19) 5 (15) (20) 6 O Spaltenweise Speicherung (·) Index in A m+1 (21) m Speicherbedarf für m×m Matrix: (m · m + m)/2 Plätze Index JA in A für das Element aik : vor der Spalte k sind k − 1 Spalten gespeichert ; ((k − 1) · (k − 1) + (k − 1))/2 Plätze JA = (k · k − k)/2 + i Anmerkung: • Bei der Berechnung der oik , yi , xi kann der Index oft auch durch Hochzählen ermittelt werden, • spezielle Routinen für Einspeichern, Multiplikation, Einarbeiten von Randbedingungen und Drucken sind erforderlich. - 50 - D.3. Cholesky-Verfahren D.3.1.2 Skylinetechnik Die globalen Matrizen großer Systeme sind oft nur dünn besetzt. Koeffizienten aik 6= 0 können nur dann entstehen, wenn es auch ein Element von i nach k gibt. Aus den Formeln (D.4) und (D.5) ist abzulesen, daß für alle Matrixelemente gilt: oik = 0, falls ajk = 0 für alle j ≤ i . Führenden Nullen einer Spalte müssen nicht berechnet und also auch nicht gespeichert werden! Man speichert die Matrix unter Ausschluß dieser Nullen spaltenweise hintereinander in ein eindimensionales Feld und merkt sich den Beginn einer jeden Spalte in einem Indexfeld. Die Ersparnis an Speicherplatz und Rechenzeit ist enorm. Die Technik wird hier anhand von Dreieckselementen mit einem Freiheitsgrad je Knoten erläutert (Knotennummer ist auch die Gleichungsnummer). Liegen nF Freiheitsgrade je Knoten vor, erhalten die Freiheitsgrade am Knoten i die Gleichungsnummern (i − 1) ∗ nF + 1 bis (i − 1) ∗ nF + nF , wenn die Nummerierung mit 1 beginnt. Das Verfahren ist dann analog mit diesen Nummern durchzuführen. Elementverzeichnis Element 1 : : e : : m Knoten : : : j, k, i : : : 1 Globale Matrix i j k n 1 i X X X j u X X X: speichern u: Untermatrix k u u X (nur für Gauß) n Berechnung des Indexfeldes iSky • Feld mit 0 vorbelegen (n + 1 Elemente!) • Für alle Elemente e von 1 bis m: und alle Kombinationen von Knotennummern i, k am Element e: Berechne maximale Spaltenlänge zu Spalte k → iSky(1+k) = Max{iSky(1+k), k − i + 1} • iSky(1) auf 1 setzen (Startindex) Mögliche Kontrolle: Falls noch Zahlen im Indexfeld Null sind, hängen an den entsprechenden Knoten keine Elemente! • Berechne Anfangsindizes der Spalten: Für alle Spalten k = 2 bis n + 1: → iSky(1+k) = iSky(1+k) + iSky(k) (Im letzten Element des Indexfeldes steht die Gesamtlänge der Matrix +1.) - 51 - KAPITEL D - Lineare Gleichungssysteme Beispiel: (n = 7, m = 4) Elementverzeichnis e 1 2 3 4 i 1 2 3 5 j 4 3 4 6 Indexfeld k 2 7 5 7 iSky Sp.-Längen Indizes =⇒ (1) 0 1 (2) 1 2 (3) 2 4 (4) 2 6 (5) 4 10 (6) 3 13 (7) 2 15 (8) 6 21 Die Matrixelemente werden im eindimensionalen Feld A gespeichert an den Plätzen: Z. / Sp. 1 2 3 4 5 6 7 1 1 - 2 2 3 - 3 . 4 5 - 4 6 7 8 9 - 5 . . 10 11 12 - 6 . . . . 13 14 - 7 . 15 16 17 18 19 20 Erläuterung: Matrix A ist frei ab Index 21 . - Führende Null Untermatrix, symmetrisch (nicht gespeichert) Indexformeln in Routinen für Gleichungssystem Beginn von Spalte k oberste Zeilennr. zu k Hauptdiagonalelement (k, k) Obermatrixelement (i, k) : : : : iSky(k) iSky(k) -iSky(k + 1) +k +1 iSky(k + 1) -1 iSky(k + 1) -1 +i -k Nutzen am Beispiel G3 zu Grundwassermodell Länge der Matrix bei n=151 Knoten: Voll gespeichert Dreiecksspeicherung Skyline : : : n∗n n ∗ (n − 1)/2 LMAT = 22.801 11.476 1.638 Anzahl der Multiplikationen bei Zerlegung: Dreiecksspeicherung : n P k P i= k=1 i=1 Skyline : n P k(k + 1)/2 k=1 ≈ n ∗ ( LMAT/n )2 /2 = LMAT2 /(2n) | {z 585.276 8.884 } mittlere Höhe G3 ausgezählt - 52 - 9.880 ∼ n3 ! D.3. Cholesky-Verfahren Modifikationen - unsymmetrische Matrizen Die Hauptdiagonale wird vorweg gespeichert in A(1) bis A(n) und das Indexfeld wird nur noch für das darüberliegende Restdreieck aufgebaut. Dadurch erhält man direkteren Zugriff auf die Hauptdiagonalelemente und kann die Untermatrix (zeilenweise!) – die von der Form her symmetrisch zur Untermatrix ist – mit dem gleichen Indexfeld iSky ansprechen. Für jede Spalte wird ein Platz weniger reserviert, weil das Diagonalelement entfällt. Sei lDreieck = iSky(n)-1 die Anzahl der Koeffizienten oberhalb der Hauptdiagonalen, so findet man in A Index i n+kSky(k) n+kSky(k+1)-1 n+lDreieck+kSky(i) n+lDreieck+LkSky(i+1)-1 Inhalt Diagonalelement Aii oberstes Nicht-Null-Element der Spalte k Obermatrix-Element Ak−1 k linkestes Nicht-Null-Element von Zeile i Untermatrix-Element Ai i−1 - 53 - KAPITEL D - Lineare Gleichungssysteme D.4 Anhang: Programmbeispiel Choleskylöser Es folgen Listings von Funktionen (als MATLAB M-files) und eine kleine Anwendung hinter Funktion chol3. function MAT =chol0 (n) % MAT =chol0(n) erzeugt % fuer Cholesky-Loeser, L=(n*n+n)/2; MAT=zeros(L,1); return leere Dreiecksmatrix MAT mit n Zeilen und Spalten Ratke, 2000 %Laenge des ganzen Dreiecks %mit Nullen vorbelegen In chol6 sieht man gut, wie der Index ia hochgezählt wird. Die Ausgabe erfolgt zeilenweise und die Obermatrix wird nicht gezeigt. function chol6 (MAT,TXT) % chol6 (MAT,TXT) gibt Dreiecksmatrix MAT mit Text TXT aus % (als untere Dreiecksmatrix) % Cholesky-Loeser, Ratke 2000 disp (TXT); n1=length(MAT)+1; %der erste Platz hinter der Matrix ia=1; %Beginn 1. Spalte n=0; while ia<n1 %solange disp((MAT(ia:ia+n,1))’) n=n+1; ia=ia+n; end return wir in der Matrix sind %eine Zeile zeigen %Zeilenlaenge %Anfang naechste Zeile - 54 - D.4. CHOLESKY-ZERLEGUNG, Dreiecksspeicherung Viele Systeme haben nF (mehr als eine) Unbekannte pro Knoten, zum Knoten j gehören dann die Gleichungen (j − 1) ∗ nF + 1 bis j ∗ nF . Man speichert dann nicht einzelne Koeffizienten ab sondern läßt das durch eine Routine erledigen, die eine ganze Elementmatrix einspeichert: function MAT =chol1 (ALT,EMAT,Knoten) % MAT =chol1 (MAT,EMAT,Knoten) % speichert Elementmatrix EMAT in globale Dreiecksmatrix MAT ein % in Knoten stehen die Knotennummern zur Elementmatrix (Beginn mit 1) % die Elementmatrix hat sizeof(Knoten)*(Anzahl Freiheitsgrade je Knoten) % Zeilen und Spalten % fuer Cholesky-Loeser,Ratke, 2000 % Gleichungsnummernvektor bilden nk=length(Knoten); %Anzahl Knoten ne=length(EMAT); %Groesse Elementmatrix nf=ne/nk; %Freiheitsgrade je Knoten i=0; for j=1:nk g=Knoten(j)*nf-nf;%globale Gleichungsnummer -1 zum j-ten Knoten des Elements for k=1:nf %ueber alle Freiheitsgrade i=i+1; Nr(i)=g+k; %Gl.-Nrn. mit 1 beginnend, alle Freiheitsgrade end end MAT=ALT; for j=1:ne % alle Spalten der Elementmatrix k=Nr(j); % Gl.-Nr. im Globalen System d=(k*k+k)/2; % Zeiger auf Diagonalelement MAT(d)=MAT(d)+EMAT(j,j); %Diagonalelement for j1=1:ne % alle Zeilen i=Nr(j1); % glob. Nr. if (i<k) ik=d+i-k; MAT(ik)=MAT(ik)+EMAT(j1,j); %oberes Dreieck end %i end %j1 end %j return - 55 - KAPITEL D - Lineare Gleichungssysteme function [MAT,Resei] =chol2 (ALT,Ralt,ir,wert) % [MAT,Resei] =chol2 (MAT,Resei,ir,wert) % beruecksichtigt Randbedingung fuer Gleichung ir % mit Wert wert in globaler Dreiecksmatrix MAT und rechter Seite Resei % fuer Cholesky-Loeser, Ratke 2000 MAT=ALT; Resei=Ralt; % kopieren n1=length(MAT)+1; % Laenge Dreiecksmatrix+1 j=(ir*ir-ir)/2; % belegte Anzahl vor Spalte ir for i=1:(ir-1) j=j+1; %Element i,ir Resei(i)=Resei(i)-wert*MAT(j); %Produkt abziehen MAT(j)=0.0; %Spalte auf 0 end j=j+1; Resei(ir)=wert; MAT(j)=1.0; % Diagonalelement j=j+ir; % ir,ir+1 i=ir+1; while(j<n1) Resei(i)=Resei(i)-wert*MAT(j); MAT(j)=0.0; j=j+i; i=i+1; end return %solange j in Matrix ist %Produkt abziehen %Zeile auf 0 %Element ir,i+1 - 56 - D.4. CHOLESKY-ZERLEGUNG, Dreiecksspeicherung Oft braucht man auch eine Matrix-Vektor-Multiplikation, z.B. um den Fehler nach Lösen zu berechnen: Fehler =Resei- Chol3 (A, X); function Cvek =chol3 (AMAT,Bvek) % Cvek =chol3 (AMAT,Bvek) % Matrix-Vektor-Multikation Cvek=AMAT*Bvec % fuer symmetrische Dreiecksmatrix AMAT % zu Cholesky-Loeser, Ratke 2000 n=length(Bvek) ; Cvek=zeros(n,1); %Nullenvektor j=0; for k=1:n for i=1:(k-1) j=j+1; Cvek(i)=Cvek(i)+AMAT(j)*Bvek(k); Cvek(k)=Cvek(k)+AMAT(j)*Bvek(i); end j=j+1; Cvek(k)=Cvek(k)+AMAT(j)*Bvek(k); end return % zeigt auf (i,k) %Produkt (i,k)*k %Produkt (k,i)*i %Produkt (k,k)*k Bei vielen Gleichungen (einige Hundert) ist die Lösung nicht immer genau. Eine Nachiteration kann wie folgt realisiert werden. %Matrix MAT tol = CHMAT = Xvektor = eps = und rechte Seite ReSei sind fertig aufgebaut. max(abs(Resei))*1.E-6; % Toleranz: 6. Stelle! chol4(MAT); % Zerlegung chol5(CHMAT, ReSei); % erste Loesung 10*tol; % Dummy while (eps>tol) Rest = ReSei - chol3(MAT, Xvektor); eps = max(abs(Rest)); Xvektor = Xvektor +chol5(CHMAT, Rest); end clear (Rest, eps, tol, CHMAT); % Residuum % groesster Fehler % Verbesserung % fertig - 57 - KAPITEL D - Lineare Gleichungssysteme Zerlegen der Matrix: Die zerlegte Matrix kann im gleichen Platz stehen wie das Original. Allerdings kann man dann den Fehler nicht berechnen! z.B: MAT =chol4 (MAT); function MAT =chol4 (AMAT) % MAT =chol4 (ALT) % zerlegt eine symmetrische Dreiecksmatrix AMAT % in ihre gestaffelte Form MAT % AMAT darf durch MAT ueberschrieben werden % Cholesky-Loeser, Ratke 2000 n1=length(AMAT); MAT=AMAT; %Kopie ka=0; % vor Spalte k k =0; while (ka<n1) %alle Spalten k der Matrix, Zaehlung ab 1 k=k+1; ia=0; %vor Spalte i for i=1:k %alle Elemente aus Spalte k for j=1:(i-1), MAT(ka+i)=MAT(ka+i)-MAT(ia+j)*MAT(ka+j); end %j (Skprod.) if (i<k), MAT(ka+i)=MAT(ka+i)*MAT(ia+i); %Kehrwert Diag. i! else, MAT(ka+k)=1.0/sqrt(MAT(ka+k)); end ia=ia+i; end %i ka=ka+k; end %k return - 58 - D.4. CHOLESKY-ZERLEGUNG, Dreiecksspeicherung Die Lösung kann am gleichen Platz stehen wie die Rechte Seite. Auch dann kann man den Fehler nicht berechnen! z.B: ReseiX =chol5 (MAT, ReseiX); function X =chol5 (MAT,B) % Xvek =chol5 (MAT, Resei) % berechnet die Loesung Xvek aus rechter Seite Resei % und der gestaffelten Form MAT (in Dreiecksform) % Resei darf durch Xvek ueberschrieben werden % Cholesky-Loeser, Ratke 2000 n=length(B); X=B; %Kopie % Vorwaertseinsetzen ia=0; %vor Spalte i for i=1:n %alle Elemente B/X for j=1:(i-1), X(i)=X(i)-MAT(ia+j)*X(j); end %j (Skalarprodukt) X(i)=X(i)*MAT(ia+i); %Kehrwert im Diagonalelement i! ia=ia+i; end %i %Rueckwaertseinsetzen for i=n: -1: 1 ia=ia-i; X(i)=X(i)*MAT(ia+i); %Kehrwert im Diagonalelement i! for j=1:(i-1), X(j)=X(j)-MAT(ia+j)*X(i); end %j (Skalarprodukt) end %i return - 59 - KAPITEL D - Lineare Gleichungssysteme D.5 Iterative Lösung Die direkten Methoden (Gauss, Cholesky) benötigen einen mit der Anzahl n der Unbekannten linear und mit der Bandbreite b quadratisch wachsenden Rechenzeitbedarf. Da bei der Zerlegung, bei Vor- und Rückwärtseinsetzen die erste Zeile indirekt in die Berechnung aller nachfolgenden eingeht, wird zusätzlich die Lösung mit wachsendem n auch immer ungenauer, da Fehler durch die gesamte Berechnung hindurchgeschleppt werden. Eine gute Alternative bieten iterative Lösungsverfahren. Sie sind ab ca. 1000 Gleichungen genauer und ab ca. 5000 Unbekannten auch schneller als direkte Löser. Hier wird das c-g-Verfahren vorgestellt, das nur auf symmetrische Systeme anwendbar ist. Andere Iterationsschemata funktionieren auch für unsymmetrische Koeffizientenmatrizen. Literatur: W. Hackbusch, Iterative Lösung großer schwachbesetzter Gleichungssysteme, Teubner Studienbücher Mathematik, Stuttgart 1991 D.5.1 Grundidee Ax = r F = Ein symmetrisches lineares Gleichungssystem xT Ax − xT r → Min 2 (D.6) und das zugehörige Variationsproblem (D.7) haben die gleiche Lösung! Beweis in Indexschreibweise: Für F = ∂F =0 = ∂xj xi aik xk − xj rj → Min 2 müssen alle partiellen Ableitungen ∂F/∂xj verschwinden. i=j=k: i=j= 6 k: 1 i 6= j = k : 2 (= 2ajj xj ajk xk xi aij ajk xk 2ajk xk wegen aik − rj = Ax − r (D.8) = aki ) Wenn also auf einem neuen Weg das Minimum von Gl. (D.7) gefunden werden kann, hat man auch die Lösung zu (D.6)! Ein solcher Weg wird nachfolgend vorgestellt und an einem kleinen Beispiel illustriert: 4u − 2v = 6 −2u + 4v = 6 " ⇒ A= 4 −2 −2 4 # " ; r= 6 6 # " ; x= | u v # " = 3 3 {z noch unbekannt Das Variationsproblem (D.7) lautet in diesem Fall F = (4u2 + 4v 2 − 4uv)/2 − 6u − 6v F = 2u2 + 2v 2 − 2uv − 6u − 6v und man verifiziert Beweis (D.8) durch ∂F/∂u = 4u − 2v − 6 = 0 ∂F/∂v = −2u + 4v − 6 = 0 - 60 - # } bzw. D.5. Iterative Lösung Darstellung des Beispielproblems Bild 1: Das Funktional zum Beispiel F = 2u2 + 2v 2 − 2uv − 6u − 6v bildet ein Paraboloid. Die räumliche Darstellung im Bereich −1 ≤ u, v ≤ 7 enthält einige Höhenschichtlinien des Funktionals; diese sind Ellipsen mit dem Mittelpunkt (3, 3). Die Hauptachsen aller Ellipsen liegen auf den vertikalen Ebenen v = u und v = 6 − u, ebenso die Scheitel. Gesucht ist der tiefste Punkt des Paraboloids. D.5.2 Methode des stärksten Abstiegs Beginn an einem beliebigen Startpunkt, z.B. 0x = 0, im Minibeispiel also 0u = 0 , 0v = 0. Man berechnet eine Suchrichtung 0g aus dem negativen Gradienten an dieser Stelle – vergleiche Gl. (D.8): 0 g = −grad F (0x) = −∂F/∂xj = r − A 0x bzw. später nach der ν-ten iterativen Verbesserung: " Im Beispiel starten wir mit: 1 x(λ) = 0x + λg 0g =r= νg = r − A νx. # 6 . Der verbesserte Vektor ergibt sich danach zu 6 mit noch unbekanntem optimalem λ . Die zu 1x(λ) gehörigen Funktionswerte Fλ bilden eine Kurve auf dem Funktional. Der tiefste Punkt dieser Kurve ergibt das beste λ aus den Minimumbedingungen: Fλ = (0x + λ 0g)T A(0x + λ 0g)/2 − (0x + λ0g)T r → Min = (0xT A 0x +0 xT A λ 0g + λ 0g T A 0x + λ2 0g T A 0g)/2 − (0x + λ0g)T r ∂Fλ /∂λ = 0 = 0g T A 0x + λ 0g T A 0g − 0g T r 0g T 0g 0g T (r − A 0x) = ; λopt = 0g T A 0g 0g T A 0g - 61 - KAPITEL D - Lineare Gleichungssysteme Für das kleine Zahlenbeispiel erhalten wir λopt = 0g T 0g 0g T A 0g = 6 6 6 6 72 4 −2 6 −2 4 6 6 6 12 12 144 = 1/2 und sofort die Lösung des Variationsproblems und natürlich auch des Gleichungssystems: " 1 0 0 x = x+λ g = 0 0 # 1 + 2 " 6 6 # " = 3 3 # " = u v # ! gesucht Zugegeben, hier waren wir etwas glücklich: Der Startpunkt (0,0) lag zufällig auf einem Scheitel der elliptischen Höhenlinie F = 0. Etliche Iterationen mehr werden benötigt, wenn der Startpunkt nicht auf einem solchen Scheitel liegt, wie bei b) im folgendem Bild. Bild 2: Abstiegsverfahren im Grundriß: a) Jedes Gradientenvervahren, das auf einem Ellipsenscheitel beginnt, findet das Minimum in einem Schritt. b) Ein Schritt nach der Methode des stärksten Abstiegs endet stets tangential zu einer Höhenschichtlinie. Der nächste steht senkrecht darauf. Hier wird die Lösung erst nach sechs Iterationen gefunden (abhängig von der Genauigkeit). c) Iteration mit konjugierten Gradienten benötigt nicht mehr Schritte, als Unbekannte n vorhanden sind, hier n = 2. D.5.3 Konjugierte Gradienten englisch: conjugate gradients, daher auch cg-Verfahren Die Iteration (Bild 2b) läuft im Zickzack über die Ellipsenachsen hinweg, denn νg ` ν+1g, ν+1g ` ν+2g, ; νg k ν+2g. Die Suchrichtung stärkster Abstieg“ ist nach dem ersten Schritt nicht mehr optimal. ” - 62 - D.5. Iterative Lösung Eine wesentlich verbessertes Konvergenzverhalten ergibt sich, wenn konjugierte Suchrichtungen νg benutzt werden: 0x Start: = beliebig = 0r − A 0x 0g = 0d Startlösung Restfehler Suchrichtung wie vor 0d Iteration: h e λ ν+1x ν+1d ν+1g = A νg = νg T h = νdT νg/e = νx + λ νg = νd − λh = ν+1d − ν+1g(ν+1dT h)/e Matrix*Vektor (**) optimal verbesserte Lösung neuer Restfehler neue Suchrichtung Anmerkungen: 1) Die Suchrichtungen dieses Algorithmus bleiben optimal bezüglich der Minimumsuche. Wenn sich e = 0 in (**) ergibt, muß die Iteration abgebrochen werden. Sie ist dann auch beendet, es gibt keine weitere Verbesserung mehr. Das ist spätestens nach n Schritten der Fall, meistens jedoch eher. 2) Die aufwendigsten Operationen im Iterationsschritt sind nur ein Matrix-Vektorprodukt h sowie drei Skalarprodukte verschiedener Vektoren. Da es beim Matrix-Vektorprodukt nicht auf die Reihenfolge ankommt, muß die Matrix A nicht wie bei der Skylinetechnik explizit aufgebaut werden! Es genügt, die aus den Elementgleichungen entstehenden Koeffizienten aik mit ihrer Zeilen- und Spaltennummer i bzw. k in drei Vektoren abzulegen (Zeile, Spalte, Wert). Diese müssen nicht sortiert sein. D.5.4 Konjugierte Gradienten mit Vorkonditionierung englisch: preconditioned conjugate gradients, daher auch pcg-Verfahren Alle iterativen Verfahren zum Lösen linearer Gleichungen lassen sich durch Vorkonditionierung weiter beschleunigen. Mit der unteren Dreiecksmatrix L wird das Ausgangsproblem transformiert: Ax = r ⇐⇒ T L | A {z L} y = L r 'I mit der Rücktransformation x = LT y Es gibt verschiedene Methoden (s. Literaturhinweis), L so zu bestimmen, daß das unterklammerte Produkt eine Näherung der Einheitsmatrix wird. Die Berechnung von y mit dem cg-Verfahren verläuft umso schneller, je besser diese Näherung ist (im Idealfall in einem Iterationsschritt). Die Rücktransformation ist trivial wegen der Dreiecksform von L. Das pcg-Verfahren hat nur noch einen Zeitbedarf von t ∼ n log n gegenüber n3 eine enorme Verbesserung! (Leider muß zur Bestimmung von L die Matrix A doch wieder explizit aufgebaut werden.) - 63 - KAPITEL D - Lineare Gleichungssysteme D.6 Optimale Knotennumerierung Eine effiziente Speicherung (daraus resultierend auch schnellste Bearbeitung der Gleichungssysteme) bei der Skyline- und verwandten Techniken, Abschnitt D.3.1.2, wird nur erreicht bei einer günstigen Numerierung der Knoten eines Systems. Das heißt, die Numerierung muß so gewählt werden, daß die von Null verschiedenen Matrixelemente möglichst nahe der Hauptdiagonalen liegen. Solche Nichtnullelemente aik entstehen nur, wenn es ein Element gibt, das beide Knoten i und k enthält. (Bei Systemen mit nF > 1 Freiheitsgraden pro Knoten ist aik eine (nF × nF )-Untermatrix, was aber an der Problemstellung nichts ändert.) Fachwerkträger Das nebenstehende kleine Netz ist einmal zufällig (senkrechte Ziffern) und optimal (kursiv) numeriert. Die zugehörigen Matrixbelegungen darunter verdeutlichen den Effekt: Sämtliche grau unterlegten eingeschlossenen Nullelemente links sind durch Umnumerierung außerhalb der Skyline plaziert worden. Die Zahlen in den Matrixelementen geben an, wie viele Elemente darüber vorhanden sind = ˆ Anzahl der Multiplikationen im Skalarprodukt beim Staffeln. links: 45 Matrixelemente Multiplikationen: 8·1+6·2+6·3+4·4 +3·5+3·6+3·7+8+9 =125 rechts: 27 Matrixelemente Multiplikationen: 9 · 1 + 8 · 2 = 25 ; 80% gespart! Die zunächst so einfach anmutende Aufgabe kann bei größeren Systemen kaum noch von Hand bewältigt werden. Das System der Mecklenburger Boddenkette mit 781 Knoten stellt dabei noch längst keine Obergrenze dar! Eine automatische interne Umnumerierung kann mit den nachfolgend beschriebenen Methoden realisiert werden. Die internen Knotennummern werden ausschließlich benutzt beim Einspeichern der Elementmatrizen in das globale Gleichungssystem, dem Umordnen der rechten Seite vor dem Lösen und der Lösung danach. Für den Anwender sind bei Ein- und Ausgabe nur die externen Knotennummern (beliebig) sichtbar. - 64 - D.6. Optimale Knotennumerierung D.6.1 Cuthill-McKee-Algorithmus Für eine geschickte Umnumerierung ist nur die Kenntnis der topologischen Beziehungen notwendig; Koordinaten der Knoten werden nicht gebraucht. Als Nachbarn von i werden alle Knoten k bezeichnet, die mit i gemeinsam an irgendeinem Element vorkommen. Natürlich ist i dann auch Nachbar von k. Die Anzahl aller Nachbarn von i heißt Grad gi von i. Aus dem Elementverzeichnis stellt man zunächst eine kompakte Nachbarschaftstabelle auf, hier für den eingangs dargestellten Fachwerkträger. Man setzt jetzt einen Startknoten iStart als erstes Element in einen Vektor. Dieser sollte ein Randknoten sein. Randknoten haben meistens geringere Grade als Innenknoten. Wir nehmen hier also iStart = 5 wegen seines minimalen Grades g5 = 2. Der Grad aller Nachbarn von iStart wird um 1 vermindert, da iStart schon einsortiert ist. Der Vektor wird dann mit den Nachbarn von iStart – in aufsteigender Reihenfolge ihrer Restgrade – aufgefüllt. Wieder werden die Restgrade der Nach- Index Sp.1 Sp. 2 bis 1 + gi i gi Nachbarn 1 4 4 2 8 10 4 9 4 8 1 2 3 4 8 10 6 7 4 4 5 9 2 1 5 2 9 4 6 3 10 3 7 7 2 3 6 8 4 2 1 10 3 3 2 4 5 9 10 4 1 8 3 6 barn eines gerade eingesetzten Knotens um 1 vermindert. Das Ganze so lange wiederholen, bis alle Knoten im Vektor stehen. Es ist klar, daß jeder Knoten nur einmal eingetragen wird. Man erhält so die externen Knotennummern in interner Reihenfolge: Index: 1 2 3 4 5 6 7 8 9 10 ext. Nummer: 5 9 4 2 1 8 10 3 6 7 Die Indizes sind die internen Knotennummern zu den darunter stehenden externen, sie geben hier genau die optimale Skyline (siehe oben). Es wurden ja benachbarte Knoten möglichst eng aufeinander folgend in den Vektor einsortiert. Ein genau so gutes Ergebnis hätten wir erhalten, wenn wir mit dem Startknoten 7 begonnen hätten. Der Umnumerierungsvektor interne Knotennummern in externer Reihenfolge ext. Nummer: 1 2 3 4 5 6 7 8 9 10 interne: 5 4 8 3 1 9 10 6 2 7 D.6.2 ist leicht zu erstellen. Rückwärtsnumerierung Zu jeder neuen Numerierung soll immer auch ihre Umkehrung ausprobiert werden. ; interne Nummer ⇐ Knotenanzahl +1 - Index Bei obigem Beispiel also – mit gleicher Skylinelänge – Index: 1 2 3 4 5 6 7 8 9 10 interne Nr.: 10 9 8 7 6 5 4 3 2 1 ext. Nummer: 5 9 4 2 1 8 10 3 6 7 - 65 - KAPITEL D - Lineare Gleichungssysteme D.6.3 GPS-Verfahren (Gibbs, Poole, Stockmeyer) Bei größeren Systemen wird der Cuthill-McKee-Algorithmus sehr aufwendig: Es gibt viele Knoten mit minimalem Grad, der beste Startknoten hat eventuell einen etwas höheren Grad. Deshalb muß für mehrere Startknoten (etwa 10% bis 20% von allen) ausprobiert werden, ob sich eine verkleinerte Skyline ergibt. Und es bleibt trotzdem unsicher, ob man das Optimum dabei findet. Die folgende Iteration ermittelt einen größten topologischen Durchmesser: • Beginn mit einem beliebigen Startknoten. Dieser hat die Schichtnummer (Level) 1. • Einsortieren aller Knoten nach Cuthill-McKee. Dabei erhält jeder Knoten eine gegenüber seinem Vorgänger um Eins erhöhte Levelnr. • Im äußersten Level liegen die topologisch vom Startknoten am weitesten entfernten Randknoten. • Alle diese Knoten auf dem letzten Level wieder als Startknoten benutzen! Je mehr Level erzeugt werden, um so besser wird die Numerierung. Bei gleicher Anzahl von Schichten ist der Startknoten der günstigere, der eine geringere Breite (maximale Anzahl von Knoten in einem Level) ergibt. • Wiederholung, bis sich keine Verbesserung mehr ergibt. Beginnend mit 1 als Startknoten würde sich beim Fachwerkbeispiel ergeben Index: ext. Nummer: Level: ext. Nummer: Level: ext. Nummer: Level: 1 1 1 7 1 5 1 2 4 2 6 2 9 2 3 4 5 6 7 8 2 8 10 9 5 3 2 2 2 3 3 3 3 10 8 1 2 4 2 3 3 4 4 5 4 2 2 8 10 3 2 3 3 4 4 5 9 10 Breite verbessert 6 7 3 4 4 – 9 5 5 6 2 ja 6 7 5 6 2 nein Auch wenn als erster Knoten ein denkbar ungünstiger gewählt wird, der größte Durchmesser (hier: 7 - 5) und die damit verbundene günstige Numerierung werden in wenigen Schritten gefunden! - 66 - D.6. Optimale Knotennumerierung D.6.4 Relaxation (Rosen) Der GPS-Algorithmus stellt in obiger Form aber noch nicht sicher, daß die Knoten innerhalb eines Levels tatsächlich in optimaler Folge einsortiert wurden. Optimal wäre es, wenn die Nichtnull-Elemente der Matrix nur in einem dünnen Band längs der Haupdiagonale angeordnet wären: Bei diesem idealen Zustand liegt eine Hälfte der Nachbarn von Knoten i vor und die andere hinter dem Knoten i. Die Nummer vom Knoten i ist genau der Mittelwert der Knotennummern aller seiner Nachbarn. Daraus leitet sich die folgende iterative Verbesserung der internen neuen Knotennumerierung her: 1. Vorbereitung: Belege die erste Zeile einer 2×n-Matrix mit den externen Knotennummern in der internen Reihenfolge, die sich aus dem GPS-Algorithmus ergeben hat. 2. Berechne für jeden Knoten den Mittelwert der internen Knotennummern seiner Nachbarn und speichere das Ergebnis in der zweiten Zeile als reelle Zahl. (Nicht gerundet!) 3. Sortiere die Spalten 2 bis n − 1 der Matrix nach aufsteigenden Werte dieser zweiten Zeile – mit einem schnellen Algorithmus, am besten: Sortieren durch Mischen“. Start und Endknoten ” bleiben am Anfang und Ende; es ist klar, daß der neue Knoten 1 nur Nachbarn mit größerer und der neue Knoten n nur solche mit kleinerer Knotennummer haben können und daher ihre Numerierung hier nicht verbesserbar ist. 4. Überprüfe, ob die jetzt in der ersten Zeile stehende interne Folge eine kleinere Matrixbelegung als bisher ergibt. Wenn ja, rette das Ergebnis und setze die Iteration mit Punkt 2 fort. Andernfalls: Ende der Iteration! D.6.4.1 Sortieren durch Mischen, Kurzbeschreibung Vorbemerkung: Eine oft benutzte Methode ist Bubble-Sort“: Suche für jedes Element i der zu sortie” renden Folge von n Elementen aus dem unsortierten Rest das kleinste Element heraus und vertausche es mit dem Element i. Es werden dabei für jedes i genau n − i Vergleiche durchgeführt, insgesamt also Pn i=1 (n − i) = n ∗ (n − 1)/2. Der Aufwand steigt also quadratisch mit der Länge – fatal! Eine beliebige Folge wird beim Sortieren durch Mischen zunächst aufgefaßt als eine Anzahl von n Boxen, innerhalb deren schon eine sortierte Folge der Länge LS = 1 vorhanden ist. Aus je zwei dieser Boxen wird (durch Mischen) nun eine neue erstellt: Das kleinere Element, das in den beiden Eingangsboxen vorn steht, kommt als nächstes in die neue Box. Das wird so lange wiederholt, bis beide Eingänge leer sind. Dabei verdoppelt sich die Sortierlänge. Diese Mischdurchgänge werden wiederholt, bis LS ≥ n wird. In jedem der log2 n (aufgerundet) Mischdurchgänge werden dabei weniger als n − 1 Vergleiche durchgeführt. Der Gesamtaufwand ist also nur proportional zu n log n . D.6.5 Zusammenfassung Die vorstehend beschriebenen Methoden erlauben eine vollautomatische Umnumerierung der Knoten eines Systems, die zu einer sehr kompakten Skyline-Matrix führen. Die Effektivität wird am eingangs gezeigten Beispiel der Mecklenburger Boddenkette demonstriert, deren beste Numerierung von Hand“ ” nicht so einfach zu finden ist. - 67 - KAPITEL D - Lineare Gleichungssysteme Die ursprünglichen Knotennummern, mit Zufallszahlen generiert, erzeugen eine riesige Matrix mit sehr vielen Nullelementen innerhalb der Skyline – rechts die entsprechende Belegung der Obermatrix. Levelbildung (bei ungünstigem Startknoten) findet hintersten Winkel “ des Systems. ” Von dort ausgehend zu einer gegenüber liegenden äußersten Ecke ... Nach einer weiteren Iteration ergibt sich der topologisch größte Durchmesser, der zur besten Numerierung nach der GPS-Methode führt. - 68 - D.6. Optimale Knotennumerierung Rechts: Umnumerierung nach Gibbs, Poole und Stockmeyer reduziert die ursprungliche Skyline bei diesem Beispiel auf nur ca. 6% des Speicherplatzes; noch größer ist die Ersparnis bei der Rechenzeit. Unten links: Relaxation nach Rosen behält Startund Endknoten bei, es ergeben sich nur kleine lokale Änderung der Numerierung – in der Darstellung kaum sichtbar. Unten rechts: Die zuvor glatte Skyline wird etwas rauher, dennoch wird der Speicherbedarf noch einmal erheblich vermindert. D.6.5.1 Optimale Numerierung und iterative Löser Für das gewöhnliche cg-Verfahren bringt eine Umnumerierung keinerlei Vorteile. Das ändert sich, wenn Vorkonditionierung (pcg) benutzt wird. Die Verfahren zur Bestimmung der Transformationsmatrizen beruhen auf unvollständigen (Gauss- oder Cholesky-)Zerlegungen, d.h. es wird eine Dreieckszerlegung durchgeführt, bei der sämtliche Nullen übergangen werden – auch die, die von der Skyline eingeschlossen sind. Die Zerlegung wird also umso besser (d.h. näher an einer vollständigen Z.), je weniger solche Nullen vorhanden sind. Ohne Knotennummernoptimierung ist Vorkonditionierung meist gänzlich uneffektiv! - 69 - frei für Notizen Kapitel E Nichtlineares Netzwerk: Fachwerk, Theorie 2. Ordnung - 71 - KAPITEL E - Fachwerk E.1 Fachwerkstab nach linearer Theorie E.1.1 Bezeichnungen am Stabelement J 3J Fzk , vzk J 6 JJ Fxk , vxk k 6 l + + J S Fzi , vzi J 3 J 6 JJ Fxi , vxi α i z 6 Annahmen: - konstanter Querschnitt A - kleine Verformungen (d.h. α =const.) - kleine Verzerrungen (d.h. E-Modul E=const.) lz ? lx - -x E.1.2 " Geometrie, Transformationen cos α sin α # " = lx /l lz /l # 1 = p 2 (xk − xi ) + (zk − zi )2 " Stabverlängerung durch Verschiebung der Knoten ∆l = (vxk − vxi ) cos α + (vzk − vzi ) sin α = h − cos α − sin α cos α " = T· vi vk i sin α · vxi vzi vxk vzk # T : Transformationsmatrix - 72 - xk − xi zk − zi # E.1. Fachwerkstab nach linearer Theorie Kräftegleichgewicht am Stab " E.1.3 Fxi Fzi Fxk Fzk Fi Fk # = − cos α − sin α cos α sin α ·S (E.1) = TT · S Materialgesetz Spannung σ und Dehnung ε sind über das Hookesche Gesetz verknüpft: σ = E·ε (E.2) S/A = E · ∆l/l S = E.1.4 i EA h − cos α − sin α cos α sin α · l vxi vzi vxk vzk (E.3) Lineare Elementsteifigkeitsmatrix Gleichung (E.1) läßt sich mit (E.3) umschreiben zu: Fxi Fzi Fxk Fzk = = EA l TT − cos α − sin α cos α sin α EA {zl h · − cos α " T · vi vk − sin α cos α sin α i · vxi vzi vxk vzk # | } immer symmetrisch! eF = EA l = ek · ev cos2 α cos α sin α − cos2 α − cos α sin α 2 cos α sin α sin α − cos α sin α − sin2 α 2 2 − cos α − cos α sin α cos α cos α sin α 2 − cos α sin α − sin α cos α sin α sin2 α (Elementindex - 73 - e links oben) · vxi vzi vxk vzk (E.4) KAPITEL E - Fachwerk E.1.5 Gesamtsystem Die Verschiebungen e vk aller Stabenden e, die an einem Knoten k anschließen, müssen gleich sein (Verträglichkeit). Als globale Unbekannte sind also die 2 ∗ n Knotenverschiebungen zu nehmen. v = [v1x v1z v2x v2z v3x · · · vnx vnz ]T Sie spielen die gleiche Rolle wie die Potentiale beim Widerstandsnetzwerk und die Druckhöhen bei der Rohrnetzberechnung. Der Kontinuitätsgleichung in der Hydromechanik entspricht in der Statik die Forderung, daß die äußeren Lasten Pk an jedem Knoten mit der Summe der Stabendkräfte im Gleichgewicht stehen müssen: Pe Pk = Fk . Die Summen der Stabendkräfte läßt sich — ganz analog zu Widerstandsnetzwerk oder Rohrnetz — dadurch berechnen, daß man die einzelnen Elemente der Elementmatrizen e k in eine (2n × 2n) Globalmatrix K einsortiert und diese mit dem Unbekanntenvektor v ausmultipliziert. Dabei sind nun neben den Knotenindizes (i, k) auch noch die Richtungen (x, z) zu beachten. K ·v = P Die Globalmatrix ist dreifach singulär, was man den Elementmatrizen e k ansehen kann: Die beiden letzen Zeilen entstehen aus den vorigen durch Multiplikation mit -1. Die zweite unterscheidet sich von der ersten nur durch den Faktor sin α/ cos α. D.h. es sind mindestens drei voneinander unabhängige Randbedingungen vorzugeben! Nach Auflösen des Systems lassen sich stabweise die Verschiebungen e v zusammenstellen und die Stabkräfte nach Gleichung (E.3) ermitteln. E.2 Nichtlinearitäten E.2.1 E.2.1.1 " Große Verschiebungen Geometrieänderung bei Belastung cos α sin α # 1 = p 2 (xk + vxk − xi − vxi ) + (zk + vzk − zi − vzi )2 Die Stabverlängerung berechnet sich entsprechend zu ∆l = q (xk + vxk − xi − vxi )2 + (zk + vzk − zi − vzi )2 − l - 74 - " xk + vxk − xi − vxi zk + vzk − zi − vz i # E.2. Nichtlinearitäten E.2.1.2 Iterationsverfahren Falls angenommen werden darf, daß das Hookesche Gesetz noch gilt: 1. Vorbereitung: Aufbau der globalen Matrix wie im linearen Fall Staffeln der globalen Matrix nach Cholesky vorweg Setze Hilfsvektor ∆P auf Null 2. Berechnung der Verschiebungen aus K·v = P + ∆P 3. Kopiere ursprünglichen Lastvektor P auf Hilfsvektor ∆P 4. Berechne alle Stabkräfte e S mit Geometrie nach E.2.1.1 und Stabendkräfte Fix bzw. Fiz , diese werden vom entsprechenden Element in ∆P abgezogen. ∆P enthält jetzt nur noch den Anteil der äußeren Last, der mit den inneren Kräften nicht im Gleichgewicht ist, sowie an Lagern die Auflagerkräfte . 5. Falls noch kein befriedigendes Gleichgewicht erreicht ist: Ungleichgewichtskräfte als zusätzliche Last aufbringen =⇒ 2 sonst: =⇒ fertig! Das Verfahren konvergiert, so lange die Stäbe ihre Richtung nicht gänzlich ändern (Durchschlagproblem). E.2.2 Nichtlineares Materialgesetz E.2.2.1 Beispiel einer Materialkennlinie σ $ 6 σF −εB −εF & εF εB - ε Vereinfachungen: ∗ isotropes Material ∗ Proportionalitätsgrenze = Fließgrenze ∗ konstante Fließspannung = Bruchspannung | Bruch −σF {z Fließen }| {z linear el. }| {z Fließen } - Bruch - 75 - KAPITEL E - Fachwerk E.2.2.2 Spannungen im Stab Im linear elastischen Bereich gilt wie zuvor: σ = E · ε . Die Spannung kann nie die Fließspannung überschreiten! Im Fließbereich ist der E-Modul abzuminεF dern: EF = E . Dann ergibt sich immer die konstante Stabkraft ε S = ±AE · εF = ±AEF · ε Wird an einem Stab die Bruchdehnung erreicht, ist die Tragfähigkeit des gesamten Systems überschritten. Man bringt daher zuerst eine Last auf, die mit Sicherheit vom System ertragen werden kann und steigert diese dann in kleinen Stufen bis zum Bruch. E.2.2.3 Picard-Iteration 1. Vorbereitung: Setze Verschiebungsvektor v auf Null Setze Lastvektor P auf Grundbelastung 2. Berechne globale Matrix K mit • Stabwinkeln α nach E.2.1.1 • E-Modul E nach E.2.2.2 • Falls an einem Stab die Bruchdehnung überschritten wird: Abbruch der Rechnung =⇒ 5 3. Berechnung der Verschiebungen aus K·v = P 4. Berechne alle Stabkräfte mit neuen Verschiebungen Berechne Lagerkräfte und Ungleichgewichtskräfte Wenn noch kein Gleichgewicht erreicht: =⇒ 2 Sonst: Erhöhe Lastvektor P um nächste Laststufe =⇒ 2 5. Berechne System noch einmal mit der vorigen Laststufe (die gerade noch keinen Bruch herbeigeführt hat) Mit diesem Verfahren lassen sich Traglasten von Systemen bestimmen. Es konvergiert auch bei sich gänzlich verändernder Geometrie. Der Aufwand ist höher als bei der Methode der Zusatzlasten, da die Steifigkeitsmatrix in jedem Iterationsschritt neu aufgebaut und gestaffelt werden muß. - 76 - E.3. Übungsaufgabe E.3 Übungsaufgabe Bei welcher Belastung -Pz schlägt das abgebildete symmetrische System nach unten durch? 6 v ez Q Q Q Q E, A, l E, A, l0 ? 0 Q Q -Pz Q Q Qe e 2 Lx E.3.1 gegeben: [m, kN] 6 Lz E (Stahl) A (25 cm2 ) Lx Lz ? 2,1*108 0,0025 3,00 2,00 - Algorithmische Aufbereitung • Geometrie des unbelasteten Systems: l0 = p L2x + L2z ; sin2 α = L2z /(L2x + L2z ); ∆P = 0 Was bleibt vom globalen Gleichungssystem übrig? (1) vz = • Gleichgewichtsbetrachtung am verformten System: (2) l = p L2x + (Lz + vz )2 ; sinα = (3) σ = ∆l = l − l0 ε= S= (4) ΣFz = (5) ∆P = Schreiben Sie ein kleines Programm, das obige Formeln iterativ auswertet, bis ∆P ' 0 wird! - 77 - KAPITEL E - Fachwerk E.4 Vergleich knotenorientierter Verfahren Widerstandsnetzwerk / stat. Rohrströmung / Fachwerk Knotenkoordinaten Materialgesetz WiderstandsStationäre netzwerk Rohrströmung nur zum Zeichnen linear nichtlinear ⇒ Elementgleichung I= Transformation geometrisch nichtlinear Globale Unbekannte Rechte Seite Zusammenbau des Gesamtsystems 1 ∆U R Q= 1 hv K|Q|n−1 — — nein N Potentiale nein N Druckhöhen Uk hk Einspeisungen ungerichtet Einspeisungen ungerichtet Iein k Ek Kontinuität Ikj = Iein k Kontinuität Qkj = Ek P P j j Fachwerk Theorie 2. Ordnung erforderlich nichtlinear S= EA ∆l; l Fαk = Tα E = E(ε) EA Tβ vβk l ja 2N Verschiebungen " # vx vk = vz k Knotenlasten vektoriell " # Px Pk = Pz k Gleichgewicht P Fxkj = Pxk j P Fzkj = Pzk j Eigenschaften der Globalmatrix ohne Randbedingungen: Erst Addition der Elementmatrizen Multiplikation mit globalem Unbekanntenvektor symmetrisch symmetrisch symmetrisch pos. definit pos. definit pos. definit einfach singulär einfach singulär dreifach singulär - 78 - Kapitel F Verkehrssimulation (speziell: Verkehrsverteilung) ∗ Erste Fassung dieses Kapitels und des Programms H0180 von Dr.-Ing. S. Gärtner, Uni Hannover, Institut für Strömungsmechanik und Elektronisches Rechnen im Bauwesen, 1980 - 79 - KAPITEL F - Verkehrssimulation F.1 Übersicht Zur Verkehrssimulation werden drei Teilmodelle benötigt • Verkehrserzeugung: Welcher Bedarf an Ab- und Anfahrten entsteht wann und wo? (Wird nur kurz gestreift.) • Verkehrsverteilung: Welche Fahrten werden in einem bestimmten Zeitraum im Untersuchungsgebiet durchgeführt? Dieses Modell wird nachfolgend entwickelt. • Verkehrsumlegung: Mit welchen Verkehrsmitteln können bzw. sollen die bei der Verteilung ermittelten Fahrten durchgeführt werden? (Nicht näher behandelt) F.2 Diskretisierung des Untersuchungsraumes Der Untersuchungs- oder Planungsraum wird in Bezirke (Verkehrszellen) aufgeteilt: Die Verkehrsbeziehung zwischen den Bezirken wird quantifiziert durch die Größe Fij = Verkehrsbedarfswert, z.B. Anzahl der Fahrten vom Quellbezirk i zum Zielbezirk j während eines gewissen Zeitintervalls zu einem gewissen Zweck. - 80 - F.2. Diskretisierung des Untersuchungsraumes Als Quellverkehr(saufkommen) Qi des Bezirks i definiert man die Summe aller Fahrten, die im Bezirk i im betrachteten Zeitraum beginnen. X Fij = Qi (F.1) j Als Zielverkehr(saufkommen) Zj des Bezirks j definiert man die Summe aller Fahrten, die während des gleichen Zeitraums im Bezirk j enden. X Fij = Zj (F.2) i Die Größe Fkk interpretiert man als Binnenverkehr(saufkommen) des Bezirks k. Der Binnenverkehr wächst mit zunehmender Größe des Bezirks. Wenn nur Fahrten erfaßt werden,die die Bezirksgrenzen überschreiten, dann entfällt der Binnenverkehr, d.h. es ist Fij = 0 für i = j. Die Verkehrsaufkommen Qk und Zk werden autonom für jeden Bezirk k mit Hilfe eines (M1) Verkehrserzeugungsmodells ermittelt. Sie dienen als Randbedingungen (F.1) und (F.2) des hier behandelten (M2) Verkehrsverteilungsmodells, das den Qi -Zj -Input in einen Fij -Output umsetzt. Die Verkehrsbedarfswerte Fij zwischen allen Bezirken i und j lassen sich in einer Matrix darstellen: Q nach Q von Q Q Q 1 2 ··· 3 F1j F2j F3j .. . i .. . Fi1 Fi2 Fi3 n q ··· Fqj = Zj n P z 1 2 3 .. . P j Z1 Z2 Z3 F1n F2n F3n Q1 Q2 Q3 .. . Qi .. . ··· Fij .. . ··· Fin .. . ··· Fnj ··· Fnn Zj ··· ··· Fiz = Qi Zn Qn P Qk = k P Zk k Da die Fij den Randbedingungen (F.1) und (F.2) genügen müssen, folgt als weiteres die Beziehung n X i=1 Qi = n X j=1 Zj = n X n X Fij i=1 j=1 die eine Bedingungen für ein geschlossenes System repräsentiert. - 81 - (F.3) KAPITEL F - Verkehrssimulation Wird diese Bedingung verletzt, weil z.B. die Erhebung der Verkehrsaufkommen fehlerhaft ist oder das Verkehrsbedürfnis die Grenze des Untersuchungsraumes überschreitet, dann sind revidierte Verkehrsaufkommen zu betrachten. Ihre Berechnung wird durchgeführt nach folgendem Q-Z-Ausqleich: n P Qi = k=1 Q∗k + n P 2 m=1 n P Zj = k=1 Q∗k + 2 n P m=1 n P l=1 Zl∗ Q∗m n P l=1 ∗ Zm Zl∗ Q∗i (F.4) Zj∗ (F.5) Dabei entsteht aus dem mit (M1) bezirksweise prognostiziertem Q∗i -Zj∗ -Verkehrsaufkommen ein revidierter Qi -Zj -Input für das Verkehrsverteilungsmodell (M2). Die Formeln (F.4, F.5) haben notwendigerweise folgende Eigenschaften: • Wenn die Q-Z-Werte Bedingung (F.3) von vornherein erfüllen, dann ist Qi = Q∗i und Zj = Zj∗ . • Die revidierten Qi -Zj -Verkehrsaufkommen erfüllen Bedingung (F.3). Die mit (M2) ermittelten Verkehrsbedarfswerte (Fahrten) Fij lassen sich nun mit Hilfe eines (M3)Verkehrsumlegungsmodells auf das Verkehrsnetz (Straßen, Eisenbahn, . . .) aufteilen. Es ist zwar üblich, die Modelle (M1), (M2) und (M3) getrennt zu betrachten, doch sind dabei ihre Wechselbeziehungen untereinander zu beachten. So ist die Verkehrserzeugung u.a. an das Verkehrsnetz gebunden. Ebenso richtet sich die Bezirksaufteilung nach dem Verkehrsnetz, wenn das Verteilungsmodell aussagefähige Verkehrsbedarfswerte (abstrakte Verkehrsströme, die noch nicht an das Verkehrsnetz gebunden sind) liefern soll. Das Bild zeigt Abgrenzungen von Verkehrszellen (Bezirken) im innerstädtischen Bereich, Kriterien sind: • Erschließungsfunktion der Straße • Haltestelleneinzugsbereich • öffentlicher Parkplatz - 82 - F.3. Verkehrsverteilung Verkehrserzeugungsmodelle benötigen weitere Angaben zu den Zellen, beispielsweise: • Einwohnerzahl mit Alters- und Einkommensstruktur • Vorhandene oder geplante Arbeitsplätze • Ämter, Schulen, Krankenhäuser, Bahnhöfe • Gastronomieangebot • Freizeiteinrichtungen Nur bei schon vorhandenen Ortsteilen kann ein Verkehrserzeugungsmodell durch Zählungen ersetzt werden (aufwendig). Abschließend sei betont, daß das Programme zur Berechnung von Verkehrsverteilungen aus Verkehrsaufkommen lediglich den hierfür herangezogenen Rechenalgorithmus durchführen. Die Aussagefähigkeit des implementierten Verkehrsverteilungsmodells steht und fällt mit der Fähigkeit seines Anwenders, den Qj -Zj -Input sachgemäß zu erzeugen und den Fij -Output realistisch zu interpretieren. F.3 F.3.1 Verkehrsverteilung Zusammenhänge Die Verkehrsaufkommen, also die Summe der Verkehrsbedürfnisse, die den Bezirk i als Quellverkehr verlassen und die Summe derjenigen, die den Bezirk j als Zielverkehr erreichen, verteilen sich im Raum gemäß dem Gewicht der konkurrierenden Quellen und Ziele. Dabei sind im Ablauf des Verkehrsgeschehens bei Vorhandensein konkurrierender Quellen und Ziele im Planungsraum folgende Zusammenhänge erkennbar: (Z1) Ein Verkehrsbedürfnis ist umso größer, je größer die Ausstrahlungskraft einer Verkehrsquelle i ist. Diese Ausstrahlungskraft ist eine Funktion der Aktivitäten der Menschen in i, ausgedrückt durch das Maß der Verkehrserzeugung Qi aufgrund der Struktur von i. (Z2) Ein Verkehrsbedürfnis ist umso größer, je größer die Attraktion eines Verkehrsziels j ist. Letztere ist ihrerseits ein Abbild der menschlichen Aktivitäten in j, dargestellt durch Zj . (Z3) Ein Verkehrsbedürfnis klingt mit größer werdendem Widerstand zwischen der Verkehrsquelle i und dem Verkehrsziel j ab. Der Widerstand hängt von der Art der Verkehrsgelegenheit zwischen i und j ab. (Z4) Die Konstellation der Quellen und Ziele im Planungsraum modifiziert diese allgemeingültigen Aussagen. - 83 - KAPITEL F - Verkehrssimulation F.3.2 Gravitationsmodell Die Verteilung der Verkehrsaufkommen im Raum kann durch ein Modell formal dargestellt werden, das bereits im 19. Jahrhundert konzipiert wurde und (wegen seines äußeren Aufbaus analog dem Gravitationsgesetz von Newton) als Gravitationsmodell“ heute weltweite Anwendung findet. Sein ” äußerer Aufbau kann wie folgt angeschrieben werden Fij = kij Qi Zj f (wij ) mit (F.6) Fij = Reisen (Fahrten) von i nach j in einem festgelegten Beobachtungszeitraum (oder f (wij ) = wij = kij = Qi Zj = = Widerstandsfunktion, die die mittlere Reaktion auf das Kollektiv beschreibt, das für die Reise von i nach j aufzunehmen ist Streckenmerkmal (z.B. räumliche Distanz der Schwerpunkte von i und j oder auch Reisezeit, Reisekosten u.a.) Proportionalitätsfaktor für die Beziehung von i nach j, der die Dimensionsrichtigkeit zu besorgen hat und den Einfluß der Konstellation aller konkurrierenden Quellen und Ziele im Planungsraum berücksichtigt (zu berechnen!) Quellverkehrsaufkommen des Bezirks i in einem festgelegten Zeitintervall Zielverkehrsaufkommen des Bezirks j in einem festgelegten Zeitintervall andere Verkehrsbedarfswerte im weitesten Sinne, etwa Telefongespräche etc.) Gl. (F.6) trägt damit den vier Zusammenhängen Rechnung, die oben zur Beschreibung des Verkehrs(Z1), (Z2) −→ Qi Zj geschehens angegeben sind: (Z3), −→ 1/f (wij ) (Z4), −→ kij - 84 - F.3. Verkehrsverteilung Der Zusammenhang (Z3) läßt sich noch verfeinern, um beispielsweise folgende Gegebenheiten zu berücksichtigen: - Das Verkehrsbedürfnis verschwindet für wjj = 0, wenn Fußwege nicht zum betrachteten Verkehr gehören. - Im Umfeld des Quellbezirks wächst die Anzahl der Zielbezirke bei gleichmäßiger Streuung der Aktivitäten (Wohnen, Besorgen, Bilden, Besuchen, Erholen, ...) quadratisch an. Einerseits steigt damit das Verkehrsbedürfnis (im Nahfeld) bei zunehmender Entfernung wj j , - Andererseits fällt die Attraktivität der Ziele mit wachsender Entfernung, so daß das Verkehrsbedürfnis nach Erreichen eines Maximalwertes (im Fernfeld) wieder abklingt. Ein denkbarer Ansatz für die entsprechende Widerstandsfunktion f (wij ) lautet f (w) = eαw /w, wobei die Distanzempfindlichkeit“ α dem Verkehrsgeschehen entsprechend gewählt wird, beispielswei” se aus Erfahrungswerten. Der Beiwert α liegt stets zwischen 0 und 1,0 [1/km] und kann an Zählwerte angepaßt werden (automatische Kalibrierung des Modells). Da der Verkehrsbedarfswert Fij dem reziproken Widerstand [f (wij )]−1 proportional ist, betrachten wir nebenstehenden Graphen: Man beachte, daß der reziproke Widerstand mit wachsendem w bis zur Grenze 1/α zu- und danach wieder abnimmt. Für eine Distanz wij bilden wir den Koeffizienten aij = [f (wij )]−1 = wij exp(−αwij ) , so daß das Gravitationsmodell (F.6) folgende Form erhält: Fij = kij aij Qi Zj |{z} | gesucht {z bekannt (F.7) } Bei fehlendem Binnenverkehr ist akk = 0. Kommt im Bezirk k auch Binnenverkehr in Betracht, so ist für akk ein entsprechender Wert vorzugeben. - 85 - KAPITEL F - Verkehrssimulation F.3.3 Splitmodelle Der Zusammenhang (Z4) bleibt unberücksichtigt, wenn zunächst im gesamten Planungsraum ein konstanter Proportionalitätsfaktor angenommen wird, der lediglich die Dimensionsrichtigkeit zu besorgen hat: kij = k (k = const. für alle i, j) Fij = kaij Qi Zj (F.8) (Modell mit der Graviationskonstanten“ k) ” Damit werden aber die Randbedingungen (F.1) und (F.2) verletzt, das Gleichungssystem P Fij ≡ k P Fij ≡ k P j P aij Qi Zj = Qi j i aij Qi Zj = Zj ist mit Widersprüchen behaftet. i Z Diese Widersprüche lassen sich für jeweils eine Gleichung mit Korrekturfaktoren dQ i bzw. dj wie folgt beseitigen: dQ i P dZ j P j i Fij ≡ dQ i k P Fij ≡ dZ j k P aij Qi Zj = Qi j aij Qi Zj = Zj i ; dQ i = Qi / P ; dZ j = Zj / P Fij j Fij i Fij = k aij Qi Zj Durch Koeffizientenvergleich der oberen Korrekturgleichung mit (F.7) erhält man das auf den Quellverkehr bezogene Splitmodell: dQ i k kij = Fij = dQ i k aij Qi Zj (= const. für alle j) aij (= P Qi Zj ) ; aij Zj (F.9) j Es erfüllt Randbedingung (F.1) und verletzt Randbedingung (F.2). Das auf den Zielverkehr bezogene Splitmodell wird in analoger Weise aus der unteren Korrekturgleichung hergeleitet: dZ j k kij = Fij = dZ j k aij Qi Zj (= const. für alle i) aij (= P Qi Zj ) ; aij Qi (F.10) i Es erfüllt Randbedingung (F.2) und verletzt Randbedingung (F.1). Um beide Randbedingungen zu berücksichtigen (nicht: zu erfüllen), wird das Resultat der Modelle (F.9) und (F.10) gemittelt: Z kij = k (dQ i + dj )/2 kij = k q Z dQ i dj (arithmetisches Mittel) (F.11) (geometrisches Mittel) (F.12) Dadurch werden beide Randbedingungen verletzt! - 86 - F.3. Verkehrsverteilung F.3.4 Iterationsschema I Um beide Randbedingungen (F.1) und (F.2) gleichzeitig zu erfüllen, kann die mit Gl. (F.11) oder (F.12) gebildete Fij -Matrix iterativ verbessert werden. Da sich die mit k vorgenommene Dimensionskorrektur in beiden Splitmodellen herauskürzt, opererieren wir nachfolgend mit k = 1. Marke Anweisung Kommentar ν=0 Iterationszähler Fij = aij Qi Zj (k = 1) gesetzt! ν =ν+1 Zähler erhöhen (0) iterat: −→ Q(ν) di 6 = Qi / P j Z(ν) dj = Zj / P i (ν) dij = (ν−1) Zeilenfaktor für Fij (ν−1) Spaltenfaktor für Fij Fij Fij Q(ν) Z(ν) d + d /2 i j . . .q .............. Q(ν) Z(ν) dj di (ν) (ν) (ν−1) Fij = dij Fij iterat ←− > ε ←− ≤ ε STOP @ @ (ν−1) (ν) Fij − Fij Durchschnittsfaktormethode (F.11) ................................... geometrisches Mittel (F.12) Verbesserung @ ? @ genau genug? Iterationsende Der Iterationsschritt ν = 1 liefert dabei (F.11) bzw. (F.12). Für ν > 1 werden die Randbedingungen beliebig genau erfüllt. Dieser Iterationsablauf definiert den Proportionalitätsfaktor kij = = bzw. = ∞ Y (ν) dij ν=1 ∞ Y Q(ν) di ν=1 ∞ r Y Q(ν) di Z(ν) + dj /2 (F.13) Z(ν) dj (F.14) ν=1 - 87 - KAPITEL F - Verkehrssimulation F.3.4.1 Bemerkungen • Die Notwendigkeit veränderlicher Korrekturfaktoren kij läßt sich auch anschaulich zeigen. Die Größen Qj und Zi treten in zweifacher Bedeutung auf. In der Formulierung der Verkehrsbedarfswerte Gl. (F.7) repräsentieren sie Ergiebigkeit und Attraktivität der Verkehrsbezirke, während sie bei den Randbedingungen (F.1) und (F.2) als Summen der Verkehrsbedarfswerte das Ergebnis von Ergiebigkeit und Attraktivität unter dem Einfluß des Widerstandes darstellen. Eine starre Verknüpfung dieser unterschiedlichen Eigenschaften durch Konstanten in Gl. (F.8) enthält einen Widerspruch, der am Beispiel eines Vergleichs zweier Zielbezirke deutlich wird: Bei gleicher Attraktivität beider Bezirke, jedoch unterschiedlicher Lage zu Quellbezirken, ist die Summe der Zielverkehrsfahrten dort größer, wo eine Ballung von Quellbezirken auftritt. Wenn nun eine gleiche Summe an Zielverkehrsfahrten in beiden Bezirken entstehen soll, dann muß die Attraktivität des von starkem Quellverkehrsaufkommen umgebenen Zielbezirks um soviel geringer sein, daß die fahrtensteigernde Wirkung der konkurrierenden Quellen wieder ausgeglichen wird. Entsprechendes gilt auch für den Zusammenhang von Ergiebigkeit und Quellverkehrsaufkommen. Ergiebigkeit und Attraktivität sind also nicht allein durch das Verkehrsaufkommen zu beschreiben, sondern müssen darüber hinaus auch die Einflüsse von Konkurrenzen im Gesamtsystem enthalten. Das erfordert in den Gleichungen der Verkehrsflüsse aber zusätzliche Glieder, die einen solchen Konkurrenzeinfluß berücksichtigen und die daher mit der wechselnden Konstellation der Verkehrsbezirke zueinander für alle Verkehrsflüsse prinzipiell unterschiedlich sind. • Das dargelegte Iterationsverfahren dient der gedanklichen Einführung. Im Folgenden ist noch die unterschiedliche Wirkungsweise von (F.13) und (F.14) zu klären. Außerdem läßt sich der mit (F.14) verknüpfte Iterationsprozess beschleunigen. F.3.5 Bilineares Gleichungssystem Der Proportionalitätsfaktor (F.14) repräsentiert das Produkt kiQ kjZ kij = kiQ = kjZ = ∞ Q q Q(ν) di ν=1 ∞ q Z(ν) Q dj ν=1 , wobei und sind. Damit erhält das Gravitationsmodell (F.7) den folgenden Aufbau: Fij = aij Xi Yj Xi = kiQ Qi kjZ Zj Yj = wobei die Größen und im Quellbezirk i bzw. im Zielbezirk j definiert sind. Mit den Randbedingungen (F.1) und (F.2) entsteht ein ein System bilinearer Gleichungen: P aij Xi Yj = Qi j P i aij Xi Yj = Zj Die gesuchten 2n Unbekannten {Xi }, {Yj } und damit auch die n2 Werte Fij sind durch die 2n Gleichungen eindeutig bestimmt. - 88 - F.3. Verkehrsverteilung F.3.6 Konvergenzverbesserung Als nächstes betrachten wir einen weiteren Iterationsalgorithmus, der ebenfalls auf das System bilinearer Gleichungen führt, also auch die gleiche Fij -Matrix erzeugt: Marke Anweisung Kommentar ν=0 Iterationszähler Fij = aij Qi Zj (k = 1) gesetzt! ν =ν+1 Zähler erhöhen (0) iterat: −→ @ ν ?@ 6 @ @ ungerade (ν) dij = P j gerade Qi Zj (ν) dij = P (ν−1) Fij (ν) i (ν) (ν−1) Fij (ν−1) Fij = dij Fij iterat ←− > ε STOP ←− ≤ ε @ @ (ν−1) (ν) Fij − Fij abwechselnd: Q(ν) Z(ν) = di , d j Verbesserung @ ? @ genau genug? Iterationsende Bei dieser Ausgleichsrechnung wird entsprechend den beiden Splitmodellen (F.9) und (F.10) alternierend iteriert. Der Iterationsschritt ν = 1 liefert dabei (F.9). Für ν > 1 werden die Randbedingungen beliebig genau erfüllt. Bei genügend vielen Iterationsschritten führt sie auf exakt das gleiche Ergebnis wie das erste Schema F.3.4, was nachfolgend gezeigt wird. - 89 - KAPITEL F - Verkehrssimulation Der obige Ablauf definiert anstelle von (F.14) den Proportionalitätsfaktor kij = ∞ Q µ=1 Q(2µ−1) Z(2µ) dj di kiQ kjZ kij = kiQ = kjZ = , mit ∞ Q sowie Q(2µ−1) di µ=1 ∞ Q µ=1 (F.15) und Z(2µ) dj . Es entsteht wieder das dargelegte bilineare Gleichungssystem! Da dessen Lösung eindeutig ist, müssen beide Iterationen (F.14) und (F.15) auf das gleiche Resultat führen. Der Ansatz (F.15) bewirkt aber eine wesentlich schnellere Konvergenz! F.3.7 Durchschnittsfaktormethode Der Proportionalitätsfaktor (F.13) läßt sich im Gegensatz zu (F.14) nach Abschnitt F.3.5 nicht mehr multiplikativ zerlegen: kij = ∞ Y Q(ν) di Z(ν) + dj /2 6= kiQ kjZ ν=1 Es entsteht daher auch kein eindeutig lösbares System bilinearer Gleichungen. Mit Gl. (F.13) wird lediglich ein Gravitationsmodell realisiert mit dem Aufbau: Fij = bij Qj Zj und bij = kij aij . Mit den Randbedingungen (F.1) und (F.2) entsteht nun das System P bij Qi Zj = Qi j P bij Qi Zj = Zj wobei die (n × n)-Matrix {bij } gesucht wird. Es ist klar, daß die 2n Gleichungen dazu nicht ausreichen. i (0) Das Resultat hängt also von den Startwerten Fij und den Details des Iterationsablaufes ab. Wir wählen dazu speziell den anfangs dargelegten Iterationsalgorithmus aus Abschnitt F.3.4, der auf den Proportionalitätsfaktor (F.13) führt und der auch als Durchschnittsfaktormethode bezeichnet wird. - 90 - F.3. Verkehrsverteilung F.3.8 Zusammenfassung Das Schema aus Abschnitt F.3.4 wird modifiziert, um die oben erörterte mögliche Beschleunigung der Konvergenz zu berücksichtigen: Marke Anweisung Kommentar ν=0 Iterationszähler Fij = aij Qi Zj (k = 1) gesetzt! ν =ν+1 Zähler erhöhen (0) iterat: −→ Q(ν) di 6 =P j Z(ν) dj =P i Qi Zeilenfaktor (ν−1) Fij Zj Spaltenfaktor (ν−1) Fij @ Zweig ? @ Schalter @ @ = 1: = 2: = 3: (ν) Q(ν) dij = di Zweig = 2 ........................ (ν) Z(ν) dij = dj Zweig = 1 . . . . . . .. . . . . . . . . . . . . .. . . (ν) Q(ν) Z(ν) dij = di + dj /2 (ν) (ν) (ν−1) Fij = dij Fij iterat ←− > ε STOP ←− ≤ ε @ @ (ν−1) (ν) Fij − Fij Verbesserung genau genug? Iterationsende @ ? @ Mit diesem Iterationsablauf lassen sich folgende Modelle realisieren: Modell (A) (B) (C) quellverkehrsbezogenes Splitmodell zielverkehrsbezogenes Splitmodell arithmetisches Mittel aus (A) und (B) (D) (E) Durchschnittsfaktormethode System bilinearer Gleichungen erfüllte Rbed. Zweig (F.1) (F.2) – 1 2 3 (F.1) und (F.2) (F.1) und (F.2) - 91 - 3 1 oder 2 νmax 1 1 1 >1 >1 KAPITEL F - Verkehrssimulation F.4 Literatur [1] P.A. Mäcke / H. Hensel: Arbeitsmethode der städtischen Verkehrsplanung; Bauverlag, Wiesbaden/Berlin 1975 [2] P. Kirchhoff: Verkehrsverteilung mit Hilfe eines Systems bilinearer Gleichungen; Veröffentlichungen des Instituts für Stadtbauwesen, Technische Universität Braunschweig, Heft 5, Braunschweig 1970 [3] H. Hensel: Wörterbuch und Modellsammlung zum Algorithmus der Verkehrsprognose; Berichte Stadt, Region, Land“, Institut für Stadtbauwesen, RWTH Aachen, Bericht B 4, Aachen 1976 ” F.4.1 Bemerkungen Die ausgewählte Literatur dient der Einführung [1], der Ergänzung [2] und der Übersicht [2], [3]. Der Literatur sind zahlreiche Vorschläge zur Widerstandsfunktion f (wij ) zu entnehmen. Hier wird exemplarisch ein Ansatz zugrundegelegt gelegt, der am Institut für Verkehrswirtschaft, Straßenwesen und Städtebau der Universität Hannover verwendet wird. - 92 - Kapitel G Kalibrierung - 93 - KAPITEL G - Kalibrierung G.1 Problemstellung Bei baustatischen Problemen sind die das Ergebnis bestimmenden Eingabewerte (Längen, Querschnitte, Elastizitätsmoduln, Belastungen etc.) in der Regel vollständig bekannt. Bei anderen Fragestellungen sind einige von ihnen mit erheblichen Unsicherheiten behaftet, beispielsweise: • Rohrströmung: relative Rauhigkeiten k/D • Verkehrsverteilung: Attraktivitätskoeffizient α • Oberflächengewässer und Transport: Dispersionsbeiwerte D • Grundwasser: Durchlässigkeiten k und Porositäten np Das numerische Modell kann dann zunächst oft nur mit Schätzwerten betrieben werden. Stehen für das berechnete Ereignis genügend Beobachtungen bereit, beispielsweise gemessene oder gezählte • Rohrströmung: Geschwindigkeiten v, Drücke p • Verkehrsverteilung: Verkehrsflüsse Fij • Oberflächengewässer und Transport: Geschwindigkeiten v, Konzentrationen C • Grundwasser: Standrohrspiegelhöhen h und Filtergeschwindigkeiten vF muß versucht werden, die obigen Eingabewerte ( Parameter“) so einzustellen (das Modell zu kali” ” brieren“), daß Rechen- und Meßergebnisse weitestgehende Übereinstimmung aufweisen. G.2 Gütekriterium Gegeben seien ein Vektor (oder eine Matrix) X von m berechneten Werten und eine ebenso große Anzahl von gemessenen Sollwerten S. Für die Beurteilung der Güte der Kalibrierung müssen die Differenzen Di = Si − Xi normiert werden (nur eine skalare Größe F ). G.2.1 Größter Absolutbetrag Nur in sehr einfachen Fällen genügt es, das betragsgrößte Element des Fehlervektors D herauszusuchen: F = Max{|Di |} . G.2.2 Summe der Beträge In fast jedem Falle unzureichend ist die Summierung der Beträge von D: F = m P |Di | . Es kommt i=1 dabei häufig vor, daß zwar viele Differenzen Di nahezu verschwinden, einige wenige aber sehr groß bleiben. - 94 - G.3. Ein einfaches Schachtelungsverfahren G.2.3 Fehlerquadratmethode Sehr geeignet und üblich als Norm ist die Summe der Fehlerquadrate: F = m P i=1 Di2 . Es ist klar, daß hierbei die größten Abweichungen besonders ins Gewicht fallen und so bei der Kalibrierung vorrangig minimiert werden, bevor die kleineren beachtet werden. Modifikation: Liegen Ergebnisse unterschiedlicher Art vor (beispielsweise mV Geschwindigkeiten und mP Drücke), müssen sie auch unterschiedlich gewichtet werden: F = WV mV X DV2 i + WP i=1 G.3 mP X DP2 j (G.1) j=1 Ein einfaches Schachtelungsverfahren Liegt im gesamten System nur ein einzelner zu kalibrierender Parameter P vor, der durch bekannte Grenzen eingeschränkt wird P = Pmin + α (Pmax − Pmin ) mit 0.0 ≤ α ≤ 1.0 , läßt er sich meist durch Einschachtelung bestimmen. (Dabei ist die Definition des Parameters α etwas verallgemeinert; die Distanzempfindlichkeit bei der Verkehrsverteilung erfüllt sie eher zufällig!) Dazu wird das Einheitsintervall in nT eil gleichgroße Stücke ∆ = 1.0/nT eil geteilt und die Simulation durchgeführt für alle Werte von α = {∆, 2∆, 3∆ . . . (nT eil − 1)∆} mit anschließender Berechnung der Fehlerquadratsumme. (Für die Intervallgrenzen selbst muß die Rechnung nicht ausgeführt werden.) Um den Wert αopt mit dem kleinsten zugehörigen Fehlerquadrat Fmin sucht man mit den nächsten Einschachtelungsschritten weiter: α1 = αopt − ∆(ν) ; α2 = αopt + ∆(ν) ∆(ν+1) = 2∆(ν) /nT eil (G.2) α = {α1 + ∆, α1 + 2∆, α1 + 3∆ . . . α1 + (nT eil − 1)∆} =⇒ Schritt ν + 1 Nach Berechnung mit den neuen Werten α und erneuter Minimumsuche wird das Suchintervall mit dem Formelsatz (G.2) weiter eingeschränkt. - 95 - KAPITEL G - Kalibrierung Anmerkungen: • Für nT eil wählt man eine kleine ungerade Zahl (z.B. 5). Bei geradem nT eil erhielte man gleiche α-Werte in aufeinander folgenden Schritten. • Falls lokale Minima erwartet werden müssen, muß nT eil jedoch so groß gewählt werden, daß das globale Minimum miterfaßt wird (siehe rechtes Bild). • Die Einschachtelung wird abgebrochen, wenn sich αopt nicht mehr wesentlich ändert. Nicht erwartet werden kann, daß die Fehlerquadratsumme Null wird! • Die Methode eignet sich besonders für Probleme, bei denen die partielle Ableitung der Fehlernorm nach dem Parameter wie bei der Verkehrsverteilung kompliziert oder nicht darstellbar ist und deshalb das Gauß-Newton-Verfahren nicht infrage kommt. Der Verlauf der Iteration wird durch die beiden Abbildungen illustriert: G.3.1 Pseudocode zur Kalibrierung Die Kalibrierung kann bei der Verkehrsverteilung wie folgt realisiert werden: Gemeinsame Variablen (global) in Haupt- und Unterprogrammen Name N Fij SOLL TestAus Typ int (N*N) double (N*N) double Boolean Inhalt Größe Fij Fˆij Steuergröße Erläuterung Anzahl der Bezirke Fahrtenmatrix Sollwerte der Fahrtenmatrix wenn false keine Testausgaben - 96 - G.3. Ein einfaches Schachtelungsverfahren G.3.1.1 true: repeat Hauptprogramm Resultate [zweig,. . . , α] Anweisung =vvein(daten); Kalib Kalib? ( [α, Kalib] TestAus Fij Kalib? true: [α, Kalib] false: =α < 0.0; =vvcalib(-1.0); =0; =vviter(zweig,. . . , α) =vvcalib(α); break; Protokoll; vvplot(0); end; G.3.1.2 Kommentar Eingabedaten lesen, mit Q-Z-Ausgleich und Protokoll Kennzeichen Kalibrierung Abfrage Vorbereitung (false) keine Ausgabe Berechnung Abfrage neues α Ende repeat Zahlenausgabe graphische Ausgabe Programmende Kalibrierungsroutine Matlab-Definition: function [alpha,Kalib] =vvcalib(alphaAlt); Einige interne Variablen müssen statisch (persistent) deklariert werden, da ihr letzter Wert auch im nächsten Aufruf noch bekannt sein muß: Name Alpha1 Alpha2 AlphaOpt dAlpha nTeil iTeil FQopt Typ double double double double double int double Inhalt α1 α2 αopt ∆ nT eil Zähler iT eil Fopt Erläuterung untere Intervallgrenze obere Intervallgrenze bisher bestes α Länge Teilintervall Anzahl Intervallstücke aktueller Intervallpunkt bisher kleinste Fehlernorm (bei αopt ) - 97 - KAPITEL G - Kalibrierung Programmablauf: falls αalt < 0.0 (1. Aufruf) Anweisung(en) Kalib = 1; Kommentar Vorbelegung: (true) α1 nT eil ∆ α i T eil äußerste Grenzen für α in nT eil Teile unterteilen Schrittweite unterer Wert (ohne die Grenzen) allererstes Ergebnis berechnen Ende Vorbereitung weiter Fehlerquadratsumme, (G.1) = 0.0; α2 = 1.0; = 5; = (α2 − α1 )/nT eil ; = α1 + ∆; = 0; return; sonst: Berechnung der Norm F falls iT eil ≡ 0 (allererstes Ergebnis) Fopt = F; αopt = αalt ; iT eil = 1; Ergebnis und Parameter merken 1. Punkt im Intervall ( Ergebnis und Parameter merken falls F < Fopt (besseres Ergebnis) falls iT eil < nT eil (noch im Intervall) sonst: Fopt = F ; αopt = αalt ; iT eil = iT eil + 1; neues α: interner Zähler ( α erhöhen neue Rechnung weiter Grenzen verengen siehe (G.2) neue Schrittweite α = αalt + ∆; return; α1 = αopt − ∆; α2 = αopt + ∆; ∆ = (α2 − α1 )/nT eil ( falls ∆ < 0.0001 andernfalls G.4 α = αopt ; ( Kalib = 0; α = α1 + ∆; iT eil = 1; return; end; 3 Dezimalen genau (false) fertig 1. Wert im Intervall interner Zähler Ende Unterprogramm Newton-Iteration: Kalibrierung bei Verkehrsverteilung Falls sich das Fehlerquadrat F (siehe G.2.3) nach dem gesuchten Parameter α differenzieren läßt, kommt für die Suche nach seinem Minimum eine Newton-Iteration sehr in Betracht. Sie benötigt in der Regel erheblich weniger Schritte als das Schachtelungsverfahren nach G.3. Die notwendige Bedingung für ein Minimum (wir hoffen, es liegt nur eines vor!) lautet: ∂F = 0 ∂α (G.3) Wenn diese explizit nach α auflösbar ist, erhält man den Parameter direkt - ohne Iteration. - 98 - G.4. Newton-Iteration: Kalibrierung bei Verkehrsverteilung Leider scheitert der Versuch, dieses auf eine Verkehrsverteilung mit der Fahrtenmatrix Fij und ihre gegebenen Sollwerte Sij anzuwenden: ∂F ∂α = X X ∂ (Fij − Sij )2 ∂α i j XX ∂ = Fij − Sij 2(Fij − Sij ) · |{z} ∂ α i j const. XX ∂ aij kij Qi Zj = 2(Fij − Sij ) · | {z } ∂ α i j const. XX ∂ {aij kij } = 2(Fij − Sij ) Qi Zj · ∂ α | {z } i j kij ∂aij ∂α +aij ∂kij ∂α Für i = j ist der Binnenverkehrskoeffizient aii =const., also nicht von α abhängig. Die partielle Ableitung der restlichen aij ist leicht zu berechnen: ∂ aij ∂ 2 · e−αwij = wij · e−αwij = −wij ∂α ∂α Auch die Korrekturfaktoren kij sind vom Parameter α abhängig, aber nicht explizit als Funktion anzugeben! Sie entstehen erst auf etwas verwickelte Weise im Iterationsalgorithmus. Auf analytische Weise ist die Minimumsuche daher zunächst nicht durchführbar. G.4.1 Fehlerquadrat und Distanzempfindlichkeit α Das Diagramm läßt erkennen, daß für sehr groß werdende Werte von α das Fehlerquadrat asymptotisch auf einen Wert zugeht, der weit größer als das Minimum ist. Die Attraktivitäten gehen wegen der Exponentialfunktion im Nenner gegen Null – nur die Binnenverkehrskoeffizienten haben dann noch Einfluß auf die Berechnung. α = 0 liefert auch ein erhöhtes Fehlerquadrat. Ein einziges Minimum liegt in dem Bereich 0 < α < 1. Die Kurve ist ausgesprochen glatt. - 99 - KAPITEL G - Kalibrierung G.4.2 Näherungsansatz für das Fehlerquadrat Führt man für drei verschiedene Parameter αk eine Berechnung der Verkehrsverteilung und des zugehörigen Fehlerquadrats Fk durch, läßt sich ein Näherungsansatz für F bestimmen: F (G.4) 1.0 α1 α12 F1 c1 F2 = 1.0 α2 α22 · c2 F3 1.0 α3 α32 c3 mit ' c1 + c2 α + c3 α2 F ; = C = H H −1 · C · (Einsetzen der drei Wertepaare) F (Bestimmung der cp ) (G.5) Mit diesem Ansatz läßt sich das Minimum näherungsweise nach (G.3) finden: ! ∂F/∂α ' c2 + 2c3 α = 0 ; αmin. = −0.5c2 /c3 (G.6) Der optimale Parameter α kann iterativ beliebig genau ermittelt werden. Dazu muß nach erneuter Bestimmung des Fehlerquadrates zu einem verbesserten α immer das vom Minimum am weitesten entfernteste Paar [αk , Fk ] durch die neuen Werte ersetzt werden. Damit werden wieder die cp und ein verbessertes αmin. nach (G.5) und (G.6) bestimmt. Das Interpolationspolynom (G.4) wird dabei bezüglich des Minimums immer genauer, weil die Stützstellen immer näher an dieses heranrücken. G.5 Gauß-Newton-Verfahren Dieser Abschnitt ist noch unbearbeitet. - 100 - Kapitel H Handwerkszeug II: Integration gewöhnlicher Differentialgleichungen - 101 - KAPITEL H - Integration gew. DGln Überblick Typisch ist die Aufgabe, aus einem gegebenen Zustandsvektor y0 zur Zeit t = t0 die Zustände yi in den Zeitpunkten t = ti zu berechnen; wobei das System von gewöhnlichen Differentialgleichungen . y i = f (yi ,ti ) zu lösen ist. Beispiele sind • die Schwingungen eines Bauwerks nach Stoßbelastung • die Zustände in einem (biologischen / chemischen) Reaktor, dessen Zustandsgrößen durch gewöhnliche DGln gekoppelt sind. Die numerischen Methoden für diese Art von Problemen werden hier nur mit einer abhängigen Veränderlichen dargestellt, sind aber auch auf Systeme gewöhnlicher DGln übertragbar. Das Problem schreibt sich dann DGl: Anfangswert: ẏ = f (t, y) y0 an der Stelle t0 Ausgangspunkt für alle Integrationsschemata ist die Taylorentwicklung an der Stelle t0 : ... (IV ) yh = y(t0 + h) = y0 + hẏ0 + h2 ÿ0 /2! + h3 y 0 /3! + h4 y0 /4! ... H.1 (H.1) Adams-Bashfort-Schema Ist die Differentialgleichung oft genug differenzierbar, gewinnt man aus ihr weitere Ableitungen und kann Gl. (H.1) direkt benutzen. Wenn so n Ableitungen gegeben sind, ist der Abbruchfehler (n+1) R = hn+1 y0 /(n + 1)! + ... Man schreibt dafür auch O = O (hn+1 ) — der Abbruchfehler ist von der Ordnung n + 1 . - 102 - H.2. Runge-Kutta-Verfahren H.2 Runge-Kutta-Verfahren Von Gl. (H.1) ausgehend lassen sich beliebig genaue Formelsätze entwickeln, mit denen ẏ = f (t, y) integriert werden kann. Dazu werden die zweite Ableitung und höhere mit Hilfe der Kettenregel umgeformt: ∂ ẏ ∂ ẏ dy )0 + ( )0 ( )0 ∂t ∂y dt ∂ ẏ ∂ ẏ = ( )0 + ( )0 f (t0 , y0 ) ∂t ∂y = ft (t0 , y0 ) + fy (t0 , y0 ) f (t0 , y0 ) y¨0 = ( ... y0 (H.2) = ftt (t0 , y0 ) + 2fty (t0 , y0 ) f (t0 , y0 ) + fyy (t0 , y0 ) f 2 (t0 , y0 ) +ft (t0 , y0 ) fy (t0 , y0 ) + fy2 (t0 , y0 ) f (t0 , y0 ) (IV ) y0 = ... usw. weitere Ableitungen durch erneutes Differenzieren d(...) dt Mit diesen Termen in die Taylorreihe eingesetzt erhält man die Lösung yh = y(t + h) = y0 + hf + h2 (ft + fy f )/2 +h3 (ftt + 2fty f + fyy f 2 + ft fy + fy2 f )/6 + h4 (...)/24 alle f , fj an (t0 , y0 ) (H.3) Das Integral k = y h − y0 = tZ 0 +h f (t, y(t))dt t0 wird numerisch integriert: k ' h n X Ai f (t0 + hλi , y(t0 + hλi )) i=1 mit den Gewichten Ai und den Stützstellen 0 ≤ λi ≤ 1 Gewichte und Stützstellen werden so bestimmt, daß möglichst viele Glieder der Reihenentwicklung (H.1) bzw. (H.2) exakt wiedergegeben werden. Da leider die Funktionswerte y(t0 + hλi ) unbekannt sind, wird als Ansatz benutzt y(t0 + λ1 h) = y(t0 ) +β1 hf (t0 , y0 ) y(t0 + λ2 h) = y(t0 + λ1 h) +β2 hf (t0 + λ1 h, y(t0 + λ1 h)) und so fort. - 103 - KAPITEL H - Integration gew. DGln Das bedeutet, daß auch noch n Koeffizienten βi zu bestimmen sind! Das Ergebnis der länglichen Rechnung sind einfach zu handhabende Formelsätze wie nachfolgend angegeben. H.2.1 Formeln für n=2 Damit lassen sich alle Terme mit h2 exakt darstellen, dabei sind die Stützstellen noch frei wählbar. A1 = A2 = 1/2; ; λ1 = 0, k1 = hf (t0 , y0 ); β1 = 0; λ2 = 1, β2 = 1 k2 = hf (t0 + h, y0 + k1 ) yh = y0 + k = y0 + (k1 + k2 )/2 oder A1 = 0, ; A2 = 1; k1 = hf (t0 , y0 ); λ1 = 0, β1 = 0; λ2 = 1/2, β2 = 1/2 k2 = hf (t0 + h/2, y0 + k1 /2) yh = y0 + k = y0 + k2 Beide Formeln sind von gleicher (2.) Ordnung genau, Unterschiede ergeben sich nur noch bei den Koeffizienten der Restglieder (h3 ). Die Runge-Kutta-Fehlberg-Verfahren sind besonders genau, da bei ihnen Stützstellen und Gewichte so bestimmt werden, daß diese Restgliedkoeffizienten besonders klein werden oder gar verschwinden. H.2.2 Formelsatz 3. Ordnung k1 = hf (t0 , y0 ); k2 = hf (t0 + h/2, y0 + k1 /2); k3 = hf (t0 + h, y0 + 2k2 − k1 ) yh = y0 + k mit k = (k1 + 4k2 + k3 )/6 H.2.3 Formelsatz 4. Ordnung k1 = hf (t0 , y0 ); k2 = hf (t0 + h/2, y0 + k1 /2); k3 = hf (t0 + h/2, y0 + k2 /2); k4 = hf (t0 + h, y0 + k3 ) yh = y0 + k mit k = (k1 + 2k2 + 2k3 + k4 )/6 H.2.4 Anwendung auf Systeme gewöhnlicher DGln Ist ein System gewöhnlicher DGln gegeben als z.B: ẏ = f (t, y, z) und ż = g(t, y, z) muß man die Teilschritte für jede Variable (y, z) ineinander verschränken: ky1 = hf (t0 , y0 , z0 ); kz1 = hg(t0 , y0 , z0 ); ky2 = hf (t0 + h/2, y0 + ky1 /2, z0 + kz1 /2); kz2 = hg(t0 + h/2, y0 + ky1 /2, z0 + kz1 /2); ... und so fort. Verbesserungen kij werden für jede der Abhängigen berechnet und nachfolgend eingesetzt; nur für die unabhängige Variable t ist die vorgegebene Schrittweite h zu benutzen. - 104 - H.3. Steife Systeme H.2.5 Fehlerabschätzung Eine Schätzung für den Fehler ist a priori nicht möglich. Sie kann nach einer zusätzlichen Rechnung mit der Schrittweite 2h erfolgen: Seien y¯h das Ergebnis des letzten Zeitschritts mit Schrittweite h und y¯2h das entsprechende mit der doppelten, enthält das Ergebnis y¯h bei einem Verfahren n-ter Ordnung y¯h keinen größeren Fehler als ε≤ H.3 |y¯h − y¯2h | . 2n − 1 Steife Systeme Manchmal erhält man aber Lösungen, die völlig abweichen von dem, was beobachtet oder sinnvollerweise erwartet wurde. Offenbar wachsen die Fehler so stark an, daß die wahre Lösung von ihnen völlig überwuchert wird. Ein brauchbares Ergebnis erhält man nur, wenn die Schrittweite h extrem klein gewählt wird. Solche DGln werden als steif bezeichnet. Zu diesem Typ gehört beispielsweise das Schwingungsproblem .. . M y +C y +Ky = F (t) . Sinnvolle Ergebnisse liefern Runge-Kutta- und ähnliche Methoden nur dann, wenn der Zeitschritt h erheblich kleiner gewählt wird als die Periode der schnellsten Eigenschwingung. Es ist klar, daß das zu einem enormen Aufwand führen kann, wenn Massen- und Dämpfungsmatrix M, C kleine Zahlen aufweisen im Vergleich zur Steifigkeitsmatrix K. Für die steifen Differentialgleichungen gibt es besonders konstruierte Lösungsschemata, die nicht an kurze Zeitschritte gebunden sind, beispielsweise das Newmark-Verfahren∗ oder das Verfahren nach Jonas† , das um 1975 bei der Hochtief AG zur Untersuchung zeitabhängiger Belastungen auf Kernkraftwerke entwickelt wurde. H.3.1 Das Verfahren dritter Ordnung nach Jonas Die Quadraturformel ϕ2 − ϕ1 = Z ξ2 =ξ1 +h ξ1 ϕ0 dξ ' N = h 0 h2 (ϕ1 + 2ϕ02 ) − ϕ002 3 6 ∗ (H.4) R. W. Clough, J. Pentzien: Dynamics of Structures, McGraw-Hill, 1975 W. Jonas Stabile Einschrittverfahren zur numerischen Berechnung dynamisch beanspruchter Tragwerke Der Bauingenieur 52, pp 397ff, Springer 1977 † - 105 - KAPITEL H - Integration gew. DGln ist unabhängig vom Zeitschritt stark absolut stabil (dämpft Fehler extrem schnell weg) und integriert die Ableitungen ϕ0 von Polynomen ϕ = ξ n je nach Grad zu: ϕ0 0 1 2ξ 3ξ 2 4ξ 3 ϕ00 0 0 2 6ξ 12ξ 2 ϕ01 0 1 2ξ1 3ξ12 4ξ13 ϕ02 0 1 2(ξ1 + h) 3(ξ1 + h)2 4(ξ1 + h)3 ϕ002 0 0 2 6(ξ1 + h) 12(ξ1 + h)2 N 0 h 2hξ1 + h2 3hξ12 + 3h2 ξ1 + h3 3 4hξ1 + 6h2 ξ12 + 4h3 ξ1 + 23 h4 Fehler 0 0 0 0 − 13 h4 also alle Ableitungen bis zum Grade 2 exakt, d.h. alle Polynome ϕ bis zum Grad n < 4. Ist nun ϕ kein solches Polynom, liefert Gl. (H.4) eine Näherung mit einem Abbruchfehler von der Ordnung h4 , die Quadraturformel ist also von dritter Ordnung. H.3.2 Ein Halbierungsverfahren vierter Ordnung (Jonas) Mit der obigen Quadraturformel erhält man bei einem Zeitschritt h = ∆t die Näherung ϕ̄(1) = ϕ + ε(1) 4 mit dem Fehler bezüglich des Terms vierter Ordnung ε(1) = − ∆t3 . Die zweimalige Anwendung von Gl. (H.4) hintereinander mit Zeitschritten h = ∆t/2, beinhaltet ∆t4 ∆t4 jedes Mal den Fehler: ε(1/2) = − 3·2 (und weitere Terme höherer 4 , insgesamt also ε(2/2) = − 24 Ordnung). Der Fehler in ϕ̄(2/2) ist also genau ein Achtel dessen in ϕ̄(1) . Beide Näherungen können nun so kombiniert werden, das die Fehlerterme 4. Ordnung sich aufheben: ϕ̄ = (8ϕ̄(2/2) − ϕ̄(1) )/7 (H.5) stellt also ein Integrationsverfahren vierter Ordnung dar. H.3.3 Anwendung auf den Einmassenschwinger Die Schwingungsgleichung des Einmassenschwingers M ẍ + Dẋ + Kx = F (t) wird mit der Quadratwurzel der Masse normiert √ mit der zusätzlichen Substitution y = M x √ √ √ √ √ √ √ √ −1 D −1 M ẋ + M −1 K −1 M x = M ẍ + M M M M −1 F (t) | {z } | {z } | {z } | {z } | {z } | {z } ÿ d y k ẏ (H.6) f (t) Übergang auf zwei DGLn 1. Ordnung: Substitution: Umschreiben von Gl. (H.6): z = ẏ (H.7) ż + dz + ky = f (t) (H.8) Nachfolgend werden die Indizes 0 für die bekannte Zeitstufe t = t0 am Anfang bzw. 1 für die unbekannte am Ende des Zeitschritts t = t1 = t0 + h eingeführt. Zunächst wird die Substitution H.7 integriert: Z Z ẏdt = h zdt = y1 − y0 = h - 106 - h 2h z0 + z1 3 3 h2 ż1 6 } | {z aus DGL H.8 − H.3. Steife Systeme dz1 + ky1 − f1(t+h) = −ż1 y 1 − y0 = h2 (dz1 + ky1 − f1 ) 6 h 2h z0 + z1 + 3 3 (H.9) Ebenso läßt sich H.8 integrieren (Impuls): Z 2h h2 h h y 1 − z1 ) = f (t)dt ' (f0 + f1 ) z1 − z0 + d (y1 − y0 ) + k ( y0 + 3 3 6 2 h bzw. nach Einsetzen von H.9 in d (y1 − y0 ) z0 2z1 h z1 − z0 + dh ( + + (dz1 + ky1 − f1 )) 3 3 6 h 2h h2 h +k ( y0 + y 1 − z1 ) = (f0 + f1 ), f linear in h 3 3 6 2 (H.10) Die Gleichungen H.9 und H.10 ergeben nach Umordnen ein Gleichungssystem für den neuen Zustand [y1 z1 ], der mit den am Anfang des Kapitels gegebenen Beziehungen rücktransformiert wird auf die Originalvariablen [x1 ẋ1 ]. Das System schreibt sich in Matrizenform als 1− 2h 3 k h2 6 k + h2 6 d −( 2h 3 + 1+ 2h 3 d + h2 6 d) h2 2 6 (d y1 = − k) z1 h 3 1 h 2 z 0 f0 h2 + 6d 2 − h6 0 − h3 k 1 − h3 d y0 h 2 f1 Mit b = " 1 2h 3 + h2 6 d wird das System bC11 −1 C21 C22 #" y1 z1 # " = h h2 z0 − f1 3 6 h h h h h2 − ky0 + (1 − d)z0 + f0 + ( + d)f1 3 3 2 2 6 2 h 1− k 6 2h h2 k+ d 3 6 2h h2 1+ d + (d2 − k) sowie 3 6 C21 + C22 bC11 und C3 = C2 + C22 bC1 bC1 C2 # mit den Hilfswerten C1 = y0 + C2 = C11 = C21 = C22 = C = ; y1 = C −1 C3 ; z1 = b (C11 y1 − C1 ) aufgelöst: Anmerkung: Das Verfahren läßt sich selbstverständlich auf schwingende Systeme mit mehreren Freiheitsgraden erweitern. Die Symmetrie der Systemmatrizen bleibt bei der Transformation analog H.6 erhalten, wenn die Massenmatrix symmetrisch nach Cholesky zerlegt wird. - 107 - KAPITEL H - Integration gew. DGln H.4 Praktische Tests Es ist oft sinnvoll, sich das Verhalten eines Lösungsschemas anhand einer vereinfachten DGl anschaulich zu vergegenwärtigen. Diese Modellgleichung sollte ähnlich sein zu der des zu untersuchenden Problems und ihre analytische Lösung muß bekannt sein. Beispielsweise werden gedämpfte Schwingungen mit einem Freiheitsgrad ohne äußere Kräfte (freie Schwingung) beschrieben durch 0 = mÿ + cẏ + ky Mit ẏ = −z DGl 2. Ordnung (H.11) (DGl 1. O.) als Substitution bekommt man 0 = −mż − cz + ky c k y− z ż = m m (zweite DGl 1. O.) Die Lösung dieses Systems von 2 DGln erster Ordnung ist nicht ganz trivial. Da Dämpfung auch zum Abklingen von Fehlern führt, kann sie zum Testen fortgelassen werden. Als Modellgleichungen benutzt man beispielsweise k/m = 1.0 und c = 0, also ẏ = −z (Geschwindigkeit) mit z0 = ẏ0 = 0.0 ż = +y mit der Anfangsauslenkung y0 = 1.0 dabei sind y(t) = cos t und z(t) = sin t die analytischen Lösungen (zum Vergleich). Die weiteren Ableitungen für das Adams-Bashfort-Schema sind: ÿ ... y y (m+1) = −ż = −y = −z̈ = −ẏ = −z (m) = −y (m−1) (rekursiv) Nach Programmierung eines Zeitschrittverfahrens kann man sich von der Güte des benutzten Schemas überzeugen, indem man mehrere Perioden berechnet und dabei den Zeitschritt variiert. Man fange an mit einem Zeitschritt von etwa 1/20 der Periodenlänge und steigere ihn vorsichtig auf die Größenordnung der Periodenlänge. - 108 - H.4. Praktische Tests Erweiterter Test mit Dämpfung Bei unterkritischer Dämpfung und den Anfangsbedingungen y0 = A, ẏ0 = 0.0 ist die Lösung der vollständigen Gleichung (H.11) bekannt (mit etwas verwickelten Ausdrücken für Frequenz und Dämpfung): y(t) = A cos(ωt) eλt (λ negativ) . Wir setzen nur A = ω = 1.0 – was der Allgemeinheit keinen Abbruch tut – und wenden das Zeitschrittverfahren auf diese Vereinfachung an. y(t) = cos t eλt analytische Lösung mit ÿ = 2λẏ − (1 + λ2 ) y z = λy − ẏ ẏ = (λ cos t − sin t) eλt DGl∗) mit Randbed.: y0 = 1.0; ẏ0 = λ (H.12) Substitution, mit z(0) = λy0 − ẏ0 = 0 ; ẏ = λy − z (H.13) und ż = λz + y (H.14) Anstelle einer DGl zweiter Ordnung (H.12) ist nun das System (H.13) und (H.14) von zwei DGln erster Ordnung zu integrieren! Die länglichen für das Adams-Bashfort-Schema benötigten höheren Ableitungen lassen sich oft wie hier rekursiv erzeugen: ẏ = λy − z ÿ = λẏ − ż (m+1) y = λy (m) − z (m) (0) y = y ż = λz + y z̈ = λż + ẏ (m+1) z = λz (m) + y (m) (0) z = z 1. Ableitungen 2. Ableitungen Rekursion Startwerte Der Vorteil der Runge-Kutta-Verfahren liegt darin, daß nur immer nur die ersten Ableitungen gegeben sein müssen, hier mit Gl. (H.13) und (H.14). ∗) aus der analytischen Lösung herleitbar: ÿ = (λ2 cos t − 2λ sin t − cos t) eλt = (2λ2 cos t − λ2 cos t − 2λ sin t − cos t) eλt = 2λ (λ cos t − sin t) eλt −(1 + λ2 ) |cos{z t eλt} | {z ẏ } y - 109 - frei für Notizen Kapitel I Klärwerkssimulation - 111 - KAPITEL I - Klärwerkssimulation I.1 Möglichkeiten der Modellbildung Die zeitabhängige Berechnung der verschiedenen gekoppelten Prozesse in einem Klärwerk ist keine triviale Aufgabe. Schon die Berechnung der Fließgeschwindigkeiten in den einzelnen Becken und Kanälen ist schwierig. Zwischen den Subsystemen sind oft Überfallkanten angeordnet, die eine teilweise Entkopplung bewirken. In den Becken müßte eine feine räumliche Diskretisierung gewählt werden als Grundlage für eine detaillierte Simulation des Stofftransports und der chemisch-biologischen Reaktionen, die zwischen den vielen verschiedenen Komponenten des Abwassers stattfinden. Hochaufgelöste dreidimensionale Modelle benötigen auch heute noch Rechenzeiten von Tagen auf Hochleistungsrechnern. Eine Beschränkung der Modelle kann erfolgen hinsichtlich der • betrachteten Subsysteme • Kopplung von Dichte und Strömung • Auflösung in Zeit und Raum, insbesondere der • berücksichtigten räumlichen Richtungen, • einbezogenen Inhaltsstoffe des Wassers • Anzahl der modellierten Reaktionsgleichungen. Es muß sorgfältig abgewogen werden, welchem Zweck das Modell dienen soll. Die Auswahl des adäquaten Modells ist entscheidend sowohl für die Zuverlässigkeit der Prognose als auch für die Kosten und den Zeitaufwand. I.2 Ein nulldimensionales Teilmodell Als nulldimensional werden Modelle bezeichnet, die nur noch in Zeitrichtung diskretisiert werden, also keine Ortsrichtungen mehr abbilden. Sämtliche Zustandsgrößen sind nur noch (zeitabhängige) skalare Größen, eine Fließgeschwindigkeit ist nicht mehr definiert. Dennoch kann ein solches Modell dazu benutzt werden, um schnell eine grobe Abschätzung des Systemverhaltens zu ermöglichen. Wegen seiner Einfachheit ist es auch sehr geeignet, Einsicht in wesentliche Wirkungsmechanismen zu gewinnen. Weiter beschränken wir uns hier auf die biologischen Vorgänge im Belebungsbecken und auch nur auf das Wechselspiel von Verschmutzung des Zulaufwassers (Substrat), Belebtschlamm (Biomasse) und Sauerstoffgehalt unter Berücksichtigung einer (teilweisen) Belüftung. I.2.1 Systemkomponenten Das Bild zeigt ein Umlaufbecken mit Rotoren zur Belüftung. Zugeführt werden ein konstanter Abwasserzulauf Qe mit einem Substratgehalt Se sowie ein Teil der verdickten Biomasse (Rücklauflaufschlamm SRl ). Die Wassermenge im Becken muß konstant bleiben, es wird also auch fortlaufend ein Abfluß Qe aus dem Becken entnommen. - 112 - I.2. Ein nulldimensionales Teilmodell I.2.2 Wachstumsgleichungen Das Wachstum der heterotrophen Biomasse unter aeroben Bedingungen wird näherungsweise beschrieben durch die Differentialgleichungen: Monod-Kinetik dXBH SS SO = µH XBH dt K S + SS KOH + SO dSS 1 SS SO = − µH XBH dt YH K S + SS KOH + SO 1 − YH SS SO dSO = − µH XBH dt YH K S + SS KOH + SO (I.1) (I.2) (I.3) mit: XBH SS SO YH µH KS KOH [g/m3 ] [g/m3 ] [g/m3 ] [–] [1/d] [g/m3 ] [g/m3 ] Konzentration der heterotrophen Biomasse Konzentration des leicht abbaubaren organischen Substrats Sauerstoffkonzentration Yield (Ergebnis), beschreibt, wieviele Anteile Biomasse je eliminiertem Substrat produziert werden. maximale Wachstumsrate der Biomasse Halbsättigungskonstante des Substrats Halbsättigungskonstante des Sauerstoffs Beispiel 0.57 4/Tag 20 g/m3 0.25 g/m3 Die Halbsättigungskonstanten sind die Konzentrationen, bei denen die Prozeßgeschwindigkeit gerade halb so groß sind wie maximal möglich. Dabei müssen alle anderen prozeßbeinflussenden Substanzen so ausreichend vorhanden sein, daß sie die Reaktion nicht verzögern. Die Klammerausdrücke in den Gln. (I.1) bis (I.2) sind für eine auf 1.0 normierte Halbsättigung als Monodkinetikfunktion oben abgebildet. Massenerhaltung: Die Koeffizienten links in den Gln. (I.1) bis (I.2) ergeben in der Summe [1 − 1/YH − (1 − YH )/YH ] µH (. . . = [2 − 2/YH ] µH (. . . ; für YH = 0.57 (wie z.B. gegeben) also ' −1.5µH (. . . . Es bleibt ein Massendefekt übrig! Die Erklärung ist, daß beim Wachsen der Biomasse das Substrat nicht vollständig verwertet wird ( unverdauliche“ Anteile) und zweitens der Be” lebtschlamm auch abstirbt, wobei wieder nicht weiter verwertbare Anteile entstehen. Diese Reste sind in den Wachstumsgleichungen aber nicht enthalten. - 113 - KAPITEL I - Klärwerkssimulation I.2.3 Belüftung Der Sauerstoffeintrag durch die Rotoren in das Becken wird näherungsweise erfaßt mittels dSO = k (cS − SO ) dt cS k [g/m3 ] [1/d] mit: (I.4) Sauerstoffsättigungskonzentration Belüftungskonstante z.B. 9.5 g/m3 z.B. 25 pro Tag Sind die Rotoren nicht eng genug angebracht oder ist das Becken zu tief, werden nicht alle Beckenteile belüftet – oft auch beabsichtigt. Dann ist (genauer) beim Sauerstoffeintrag nicht das Gesamtvolumen anzusetzen sondern das Becken auf zwei Teilvolumina abzubilden – eines mit und eines ohne Lufteintrag. I.2.4 Diskretisierung des Modells Für jedes Teilvolumen i werden die Konzentrationen im Zustandsvektor Zi = [XBH SS SO ]i zusam(0) mengefaßt. Ausgehend von einem Anfangszustand Zi (t = 0) sind die Wachstumsgleichungen – als System von 3 bzw. 6 DGln – über die Zeit schrittweise zu integrieren. Ein dazu geeignetes Verfahren (Runge-Kutta) wurde im vorangehenden Kapitel (H.2.4) erläutert. Als Belastungsterme gehen dabei ein die Konzentrationen der Zu- und Abflüsse sowie der Sauerstoffeintrag aus Belüftung. Wenn kein unbelüftetes Teilvolumen modelliert wird, entfallen auch die internen Ströme. (In der Praxis oft auch Vol1 anaerob) Da das Absetzbecken nicht zum System gehört, kann der Schlammrücklauf als prozentualer Anteil der im Auslauf vorhandenen Biomasse vorgegeben werden, optional limitiert durch eine Maximalrate. - 114 - Kapitel J Differenzenverfahren I (Beispiel: Gerinne, instationär) - 115 - KAPITEL J - Differenzenverfahren Beispiele aus der Strömungsmechanik (offenes Gerinne) (Herleitung der Gleichungen: siehe Skript Strömungsmechanik für Bauingenieure) J.1 Gerinnequerschnitt Bezeichnungen und Formeln Für die Strömung in einem näherungsweise prismatischen Gerinne gilt: Kontinuität: ∂v B ∂h ∂h + +v + ISo ∂s A ∂t ∂s =0 (J.1) Bewegung: ∂h 1 + ∂s g ∂v ∂v +v ∂t ∂s + IE = 0 (J.2) Hierbei sind die Geschwindigkeit v und der Wasserstand h veränderlich in Orts- und Zeitrichtung: v = v(s, t), h = h(s, t). Abkürzung: y = A/B J.2 Explizite Verfahren Vorbemerkung: Bei den expliziten Differenzenverfahren wird das Gerinne in n − 1 gleichlange Teile der Länge ∆s eingeteilt, so daß n Ortspunkte entstehen. Die instationäre Lösung wird von einem gegebenen Anfangszustand zur Zeit t0 in Zeitabständen ∆t an diesen Punkten ermittelt. Zur Vereinfachung wird geschrieben: Wjk = Zustandsgröße im Gitterpunkt j zur Zeit t0 + k · ∆t Hierbei kann W für h, v, y oder Q stehen. - 116 - J.2. Explizite Verfahren J.2.1 Instabiles Verfahren t 6 k+1 w w W unbekannt g W bekannt ∆t g k g ∆s j−1 g ∆s j - s j+1 Die partiellen Ableitungen der Differentialgleichung werden durch Differenzenquotienten ersetzt: k − Wk Wj+1 ∂W j−1 ≈ ∂s 2∆s , Wjk+1 − Wjk ∂W ≈ ∂t ∆t Die Funktionswerte werden aus der bekannten Zeitebene genommen: W ≈ Wjk . Durch Einsetzen in die Kontinuitäts- und Bewegungsgleichung erhält man die Differenzengleichungen: k+1 k k vj+1 − vj−1 1 hj − hkj + vjk + k ∆t 2∆s y " ; = hkj − hk+1 j hkj+1 − hkj−1 + ISo 2∆s !# =0 i ∆t h k k k k vj hj+1 − hkj−1 + 2∆s ISo + y kj vj+1 − vj−1 2∆s , bzw. zur Bestimmung des unbekannten Wasserstands hk+1 j hkj+1 − hkj−1 1 + 2∆s g ; vjk+1 = vjk k k vjk+1 − vjk vj+1 − vj−1 + vjk ∆t 2∆s ! k + IEj =0 hkj+1 − hkj−1 ∆t k k k k vj vj+1 − vj−1 − g∆t + IEj − 2∆s 2∆s ! zur Bestimmung der Geschwindigkeit in der neuen Zeitebene. Das Schema ist für die praktische Anwendung nicht brauchbar, da es — unabhängig vom gewählten Zeit- oder Ortsschritt — instabil ist. Der Abbruchfehler ist von der Ordnung O ∆s2 , ∆t . Wegen Stabilität, Konvergenz und Genauigkeit siehe Abschnitte J.4 und J.4.2. - 117 - KAPITEL J - Differenzenverfahren J.2.2 Diffusives (Lax-) Verfahren t 6 k+1 w @ I @ W unbekannt g W bekannt @ ∆t @ @ g k g @g ∆s j−1 k − Wk Wj+1 ∂W j−1 ≈ ∂s 2∆s w ∆s j - s j+1 (wie beim instabilen Verfahren); Das diffusive Lax-Verfahren unterscheidet sich vom instabilen Schema dadurch, daß für die Zeitableik k : tung nicht Wjk benutzt wird, sondern ein Mittel aus Wj−1 und Wj+1 k − Wk 2Wjk+1 − Wj−1 ∂W j+1 ≈ ∂t 2∆t oder allgemeiner h k + Wk Wjk+1 − αWjk + (1 − α) Wj−1 j+1 /2 ∂W ≈ ∂t ∆t i (0 ≤ α < 1; für α = 1 ergibt sich das instabile Schema). W ≈ Wjk oder k k W ≈ Wj−1 + Wj+1 /2 Einsetzen in Differentialgleichungen wie beim instabilen Verfahren Fehler: O ∆s2 , ∆t . J.2.3 Upstream-Differenzenverfahren t 6 k+1 ∆t k w w W unbekannt g W bekannt v>0 g g ∆s j−1 ∂W k ≈ Wjk − Wj−1 /∆s ∂s g ∆s j - s j+1 bei Strömung von links nach rechts, - 118 - J.2. Explizite Verfahren ∂W k ≈ Wj+1 − Wjk /∆s ∂s bei Strömung von rechts nach links. Dieses Verfahren trägt der Tatsache Rechnung, daß im Verlauf des betrachteten Zeitschritts Zustandsgrößen und ihre Ableitungen aus einer bestimmten Richtung zum Punkt j hintransportiert werden. ∂W ≈ Wjk+1 − Wjk /∆t ∂t Fehler: J.2.4 W ≈ Wjk . , O(∆s, ∆t). Leap-Frog-Schema t 6 k+1 w ∆t g k g w W unbekannt g W bekannt, 2 Zeitstufen! ∆t g k−1 ∆s j−1 k − Wk Wj+1 ∂W j−1 ≈ ∂s 2∆s ∆s j - s j+1 Wjk+1 − Wjk−1 ∂W ≈ . ∂t 2∆t , Die Zeitableitung wird genauer als beim Lax-Verfahren dargestellt. W ≈ Wjk oder k k W ≈ Wj+1 + Wj−1 /2 Es entstehen zwei Rechengitter, die um einen Orts- und Zeitschritt gegeneinander versetzt sind. Da zwei bekannte Zeitstufen vorausgesetzt werden, müssen aus den gegebenen Anfangswerten zur Zeit t = 0 zunächst Werte für t = ∆t mit einem anderen Verfahren (z.B. Lax) berechnet werden. Fehler: O(∆s2 , ∆t2 ). - 119 - KAPITEL J - Differenzenverfahren J.2.5 Lax-Wendroff-Schema z t 6 z k+1 j Leap-Frog ∆t/2 × @ I @ Lax @ j k ∆s/2 W bekannt × ∆t/2 W unbekannt j−1 Lax j ∆s/2 @ I @ ∆s/2 j @ j ∆s/2 - s j+1 Zuerst werden die zwei Zwischenpunkte (×) (j − 21 , k + 12 ) und (j + 12 , k + 21 ) nach dem Lax-Verfahren berechnet. Danach wird das Leap-Frog-Schema zur Bestimmung von Wjk+1 aus Wjk und den Zwischenpunkten angewendet. Der erhöhte Rechenaufwand liefert i.d.R. auch stark verbesserte Ergebnisse. J.2.6 Behandlung von Randbedingungen An den Rändern des Lösungsgebiets j = 1 bzw. j = n muß eine der zwei Zustandsgrößen hj = hj (t) oder vj = vj (t) vorgegeben sein. Die jeweils andere stellt sich in der Natur selbständig ein und ist i.d.R. unbekannt. Da die Randpunkte immer nur einen Nachbarn besitzen, kann die fehlende Größe nicht mit den Standardschemata berechnet werden. Man benötigt dazu einen modifizierten Differenzenstern oder das Charakteristikenverfahren. J.2.6.1 Modifikation des Differenzensterns für Randbedingungen t 6 k+1 z j j z 6 ∆t k j 1 M 2 · ∆s/2 j ? j 2 n−1 - M 2 · ∆s/2 j - s n - Eine der beiden Differentialgleichungen (J.1) oder (J.2) kann näherungsweise im Punkt + erfüllt werden, wobei sich die fehlende Randgröße ergibt. Die andere Gleichung bleibt unberücksichtigt. - 120 - J.2. Explizite Verfahren Berechnung von v1k+1 bzw. vnk+1 bei gegebenem hk+1 bzw. hk+1 aus Gl. (J.1) n 1 Approximation Mittelwerte: linker Rand hM = (hk1 + hk2 )/2 = (hk+1 + hk+1 1 2 )/2 (hk+1 − hk+1 2 1 )/∆s (h+ − h+ ∂h/∂s ∂h/∂t hM rechter Rand = (hkn−1 + hkn )/2 k+1 h+ = (hk+1 n−1 + hn )/2 (hk+1 − hk+1 n n−1 )/∆s hM )/∆t im Hilfspunkt +: ȳ + = ȳ(h+ ) ȳ Wenn die Randbedingungen erst nach der Berechnung der inneren Gitterpunkte eingesetzt werden, sind in der obigen Tabelle alle Werte bekannt! Die Kontinuitätsgleichung schreibt sich dann: ! v k+1 − v1k+1 h+ − hM v k+1 + v2k+1 0 = ȳ 2 + + 1 ∆s ∆t 2 hk+1 − hk+1 2 1 + ISo ∆s k+1 v k+1 + vnk+1 v k+1 − vn−1 h+ − hM + + n−1 0 = ȳ n ∆s ∆t 2 hk+1 − hk+1 n n−1 + ISo ∆s + + + ISo ∆s − hk+1 2ȳ + v2k+1 + 2 (h+ − hM ) ∆s/∆t + v2k+1 hk+1 1 2 − ISo ∆s + hk+1 2ȳ + − hk+1 1 2 vnk+1 = ! v1k+1 = (links) k+1 k+1 2ȳ + vn−1 − 2 (h+ − hM ) ∆s/∆t − vn−1 − hk+1 hk+1 n n−1 + ISo ∆s 2ȳ + + hk+1 − hk+1 n n−1 + ISo ∆s bei gegebenem v1k+1 bzw. vnk+1 aus Gl. (J.2) Berechnung von hk+1 bzw. hk+1 n 1 Approximation Mittelwerte: ∂v/∂s linker Rand vM = (v1k + v2k )/2 rechter Rand k vM = (vn−1 + vnk )/2 v + = (v1k+1 + v2k+1 )/2 k+1 v + = (vn−1 + vnk+1 )/2 (v2k+1 − v1k+1 )/∆s k+1 (vnk+1 − vn−1 )/∆s (v + − vM )/∆t ∂v/∂t IE im Hilfspunkt M : IEM (hydraulischer Umfang in + noch unbekannt) Aus der Impulsgleichung folgt damit: v + − vM v k+1 − v1k+1 + v+ 2 ∆t ∆s ! 0 = hk+1 − hk+1 1 2 1 + ∆s g k+1 v k+1 − vn−1 v + − vM + v+ n ∆t ∆s ! 0 = hk+1 − hk+1 1 n n−1 + ∆s g + IEM (links) + IEM (rechts) hk+1 = hk+1 + 1 2 1 + (v − vM )∆s/∆t + v + (v2k+1 − v1k+1 ) + IEM ∆s g hk+1 = hk+1 n n−1 − 1 + k+1 ) − IEM ∆s (v − vM )∆s/∆t + v + (vnk+1 − vn−1 g - 121 - (rechts) KAPITEL J - Differenzenverfahren J.2.6.2 Randbedingungen mit Charakteristikenverfahren t 6 k+1 k z z 6 J ] ds J = v − cR J dt J J J J J JR j j 1 2 n−1 - ∆s ds = v + cL dt ∆t j ? @ @ L ∆s j - s n - Die Werte für h und v in den Punkten R und L werden durch lineare Interpolation gewonnen: WRk = W1k + W2k − W1k (cR − v) ∆t/∆s ( Verifikation: WLk für (cR − v) = 0 ∆s/∆t ) ( am linken und W1k W2k wirdWRk = k − Wnk (cL + v) ∆t/∆s = Wnk + Wn−1 ( Verifikation: für (cL + v) = Entlang der beiden Charakteristiken 0 ∆s/∆t ) ( wirdWLk = am rechten Rand. Wnk k Wn−1 ds = v ± c gilt: dt dv g dy dv g dh ± + g (IE − ISo ) = ± + g (IE − ISo ) = 0 dt c dt dt c dt (s. Skript Strömungsmechanik II (alte Ausgabe), Gl. 8.12). Die Differenzenformen k g hk+1 − hkR v1k+1 − vR 1 − + g (IE − ISo )k1 = 0 ∆t cR ∆t (linker Rand) vnk+1 − vLk g hk+1 − hkL n + + g (IE − ISo )kn = 0 ∆t cL ∆t (rechter Rand) bzw. sind nach den nicht durch Randbedingung gegebenen Größen aufzulösen (v1k+1 bzw. hk+1 und vnk+1 1 k+1 bzw. hn ). Anmerkung: Da die Charakteristiken von Gerinneströmungen von den veränderlichen Zustandsgrößen v und c = c(h) abhängen, sind sie nicht gerade! Für eine möglichst genaue Berechnung benutzt man die Mittelwerte auf der Charakteristik. Ausgehend von den Werten der Randpunkte zur alten Zeitebene erhält man die erste Näherung für die Lage von R und L sowie für den fehlenden Randwert. Danach können v und c auf der Charakteristik gemittelt und damit der gesuchte Randwert iterativ verbessert werden. - 122 - J.3. Implizite Verfahren J.3 Implizite Verfahren Allgemeines, Abgrenzung von expliziten Verfahren Bei den expliziten Verfahren werden zur Berechnung einer Zustandsgröße Wjk+1 ausschließlich Werte k W benutzt. Eine Verknüpfung mit noch unbekannten Größen der neuen Zeitstufe i der alten Zeitstufe k+1 k+1 Wj−1 , Wj+1 findet nicht statt. Die Ortsschritte sind gleich, die Zeitschritte ∆t sind nicht beliebig groß wählbar (s. Stabilität, Abschnitte J.4 und J.4.2). t 6 k+1 z - z * H Y H 6 HH H unbekannt 6 ∆t HH H j k z HH H j j ? - j−1 j ∆sj−1,j - bekannt s j+1 ∆sj,j+1 - k+1 k+1 Bei den impliziten Verfahren wird dagegen der Einfluß der unbekannten Zustandsgrößen Wj−1 , Wj+1 der benachbarten Gitterpunkte zur neuen Zeitstufe berücksichtigt. Es ergibt sich ein Gleichungssystem für den Vektor der Unbekannten Wik+1 . Randbedingungen werden ohne Zuhilfenahme des Charakteristikenverfahrens darin berücksichtigt. Die Ortsschritte ∆s sind nicht notwendigerweise gleich. Der Zeitschritt ∆t ist nicht durch das CourantKriterium limitiert. J.3.1 Das Preissmann-Schema t 6 k+1 z z unbekannte Zeitstufe 6 6 (1 − Θ)∆t Approximationspunkt ? 6 ∆t Θ∆t k j j? - i j ? bekannte Zeitstufe s ∆sij /2 - ∆sij /2 ∆sij - In Orts- und Zeitrichtung sind im Punkt + die ersten Ableitungen darstellbar: W0+s = Wjk+1 − Wik+1 Wjk − Wik ∂W + ≈θ +(1 − θ) , ∂s ∆sij ∆sij | {z ≈( ∂W ∂s k+1 ) } | {z ∂W ∂s k ≈( ) - 123 - } KAPITEL J - Differenzenverfahren W0+t = k+1 + Wik+1 Wjk + Wik ∂W + 1 Wj − ≈ ∂t ∆t | 2 2 {z } | {z } Mittelwert k+1 = Mittelwert k 1 k+1 Wj − Wjk + Wik+1 − Wik 2∆t Für die Zustandsgröße im Rechenpunkt wird der Mittelwert gebildet: W + Wjk+1 + Wik+1 Wjk + Wik ≈θ + (1 − θ) . 2 2 Das Verfahren ist stabil für θ > 0.5. Erfahrungsgemäß bester Wert: θ ≈ 0.55 bis 0.6. Größere Werte erzeugen numerische Dämpfung. J.3.1.1 Berechnung offener Gerinne mit Preissmann-Schema Setzt man die Ansätze in die Gleichungen + + + + + = 0 h+ 0 t + v h0 s + y v0 s + v ISo und + = 0 v0+t + v + v0+s + gh+ 0 s + gIE (Kontinuität) (Bewegung) , die prinzipiell durch Ite, hk+1 ein, erhält man zwei nichtlineare Gleichungen für vik+1 , vjk+1 , hk+1 j i ration lösbar sind. Der Aufwand wird verringert durch Linearisierung. Diese kann erfolgen mit Hilfe von hk+1 = hkl + ∆hl l , vlk+1 = vlk + ∆vl y k+1 = y kl + ∆y kl ≈ y kl + ∆hl l IE+ ≈ k + Ik IEi Ej 2 unter Vernachlässigung aller Terme, die ∆hl und ∆vl in quadratischer oder höherer Ordnung enthalten. Je Abschnitt ergeben sich zwei lineare Gleichungen der Form a ∆hi + b ∆vi + c ∆hj + d ∆vj = e a0 ∆hi + b0 ∆vi + c0 ∆hj + d0 ∆vj = e0 und somit für das Gesamtsystem ein bandförmiges lineares unsymmetrisches Gleichungssystem für die Unbekannten ∆hl und ∆vl , das nach Einarbeiten von Randbedingungen mit Standardverfahren (Gauss, Double Sweep) lösbar ist – hierbei wird das Charakteristikenverfahren nicht benötigt! - 124 - J.3. Implizite Verfahren J.3.1.2 Double Sweep für das Preissmann-Schema Es handelt sich um ein Übertragungsverfahren mit Ablösen der Unbekannten. Das Gerinne wird abschnittsweise beschrieben: Knoten: 1 2 u u Abschnitt: .... .... 1 2 j k u u .... .... .... n u .... n − 1 j Für jeden Abschnitt ergeben sich 2 Gleichungen aus dem Preissmann-Schema " a c b d á ć b́ d´ # ∗ ∆hj ∆vj ∆hk ∆vk " # e = é Die Koeffizienten inklusive rechter Seite werden als (2*5) Matrix A gespeichert und diese umgeformt; (das Zeichen ∆ wird im Folgenden der Übersichtlichkeit wegen fortgelassen). " J.3.1.3 a11 a12 a13 a14 a21 a22 a23 a24 # ∗ hj vj hk vk " # a 15 = a25 Linkes Abschnittsende, Knoten j Für eine der Zustandsgrößen des linken Knoten j wird formal geschrieben: entweder hj = Chj + Fhj ∗ vj oder vj = Cvj + Fvj ∗ hj allgemein: Bj = CBj + FBj ∗ Uj (J.3) Die so ausgedrückte Größe wird mit Bj bekannt, linkes Ende j “ bezeichnet, die andere (Uj ) ist ” die in der Hinrechnung verbleibende Unbekannte im Knoten j “. C ist eine vorgegebene oder fertig ” berechnete Konstante und F ein bekannter Faktor vor der noch unbekannten anderen Zustandsgröße. Im ersten Abschnitt ist eine der möglichen Randbedingungen mit h1 = hˆ1 ; Ch1 = hˆ1 , Fh1 = 0 oder v1 = vˆ1 ; Cv1 = vˆ1 , Fv1 = 0 gegeben. Die beiden Gleichungen lassen sich jetzt ohne die Variable Bj anschreiben: " a1Bj ∗ (CBj + FBj ∗ Uj ) a1U j a2Bj ∗ (CBj + FBj ∗ Uj ) a2U j a13 a14 a23 a24 # ∗ - 125 - 1.0 Uj hk vk " # a15 = a25 KAPITEL J - Differenzenverfahren beziehungsweise 0.0 a1Bj ∗ FBj + a1U j 0.0 a2Bj ∗ FBj + a2U j | a13 a14 a23 a24 ∗ } {z neue aiU j 0.0 Uj hk vk a15 − a1Bj ∗ CBj = a25 − a2Bj ∗ CBj | {z } neue ai5 Weiter kann nach eventuellem Zeilentausch die Unbekannte Uj isoliert werden, die gestaffelten Koeffizienten stehen wieder in A : " J.3.1.4 0.0 1.0 a13 a14 0.0 0.0 a23 a24 # ∗ 0.0 Uj hk vk # " a15 = a25 (J.4) Rechtes Abschnittsende, Knoten k Die untere Zeile von (J.4) wird benutzt, um eine der beiden Zustandsgrößen dort durch die andere auzudrücken. Wenn rechts der Gebietsrand (k = n) vorliegt, wird nur die Randbedingung eingesetzt und die Rückrechnung beginnt (siehe unten). Als neue Bekannte“ Bk wird diejenige Größe gewählt, die in der zweiten Zeile den betragsgrößeren ” Koeffizienten hat, damit wird bei Normierung dieser Zeile Division durch 0 vermieden. Der große Koeffizient bedeutet aber auch, daß der Einfluß dieser Variablen groß ist. Es ergibt sich: " # 0.0 1.0 a1Bk a1U k 0.0 0.0 1.0 a2U k ∗ 0.0 Uj Bk Uk " # a15 = a25 Außerdem kann der Koeffizient von Bk in der ersten Zeile mit Hilfe der zweiten zu Null gemacht werden. " J.3.1.5 0.0 1.0 0.0 a1U k 0.0 0.0 1.0 a2U k # ∗ 0.0 Uj Bk Uk " # a 15 = a25 (J.5) Ablösen der Unbekannten Aus Gleichung (J.5) ergeben sich die Formeln für die Rückrechnung. Uj = CU j + FU j ∗ Uk ; CU j = a15 , FU j = −a1U k Bk = CBk + FBk ∗ Uk ; CBk = a25 , FBk = −a2U k (J.6) Die Form von Bk ist die gleiche wie oben in Gln. (J.3) für Bj . Die beiden Konstanten C werden direkt in den Ergebnisvektor gespeichert, die Faktoren F in einen zusätzlichen (2*n) Vektor. Zudem muß für jeden Knoten in einem Merkfeld festgehalten werden, ob h oder v die Unbekannte Uj war. Danach kann der gesamte Formelsatz mit Uk als neue linke Unbekannte“ für den nächsten Abschnitt ” ausgewertet werden. - 126 - J.3. Implizite Verfahren J.3.1.6 Rechter Gebietsrand Die Unbekannte Uk = Uˆk ist als Randbedingung gegeben. Zu Bk und Uj sind in den Ergebnisvektor nur noch die Anteile aus Uk nach Gln. (J.6) zu addieren. Damit ist am vorigen Abschnitt die rechte Unbekannte auch ermittelt. Es werden sukzessive, rückwärts über alle Abschnitte, die Anteile der ausgerechneten Unbekannten in die Lösung eingetragen, bis der linke Gebietsrand erreicht ist. J.3.1.7 Speicherung während des Verfahrens bei n Knoten 2∗n 2∗n n 2*5 5 ∗ n + 10 Konstanten C Faktoren F Zeiger Matrix A direkt während Hinrechnung in Lösungsvektor einer je Zustandsgröße einer pro Knoten, (”U ” ist h oder v) nur einmal, bei Rückrechnung nicht gebraucht Speicherplätze insgesamt Die Auflösung mit dem Gauss’schen Algorithmus hätte dagegen mindestens gebraucht: 8∗n 2∗n 10 ∗ n Koeffizienten aus Abschnitten und Randbedingungen Elemente der rechten Seite bzw. der Lösung Speicherplätze insgesamt Der Double-Sweep-Algorithmus verbindet zwei Vorteile: • Umgehung numerischer Probleme, die durch kleine Koeffizienten hervorgerufen werden und • er kommt mit dem halben Speicherplatz aus. - 127 - KAPITEL J - Differenzenverfahren J.4 Stabilität und Genauigkeit Sei w(s, t) die exakte Lösung der Differentialgleichung (Fehler in den physikalischen Annahmen, die zur DGL führen, i.d.R. vorhanden!) und W (s, t) sei die exakte Lösung der Differenzengleichung, dann ist δ = W − w der Diskretisierungs- oder Abbruchfehler, der dadurch entsteht daß die Differentiale durch Differenzen ersetzt werden. Dadurch, daß nur mit einer beschränkten Anzahl von Dezimalen gerechnet wird, erhält man W (s, t) als numerische Lösung der Differenzengleichung mit ε = W − W als Rundungsfehler. E = ε+δ = W −w, der Gesamtfehler, beinhaltet nicht die Fehler, die bei den Annahmen hinsichtlich der physikalischen Grundlagen gemacht wurden! Zu untersuchen sind: • Konvergenz: geht δ → 0 (und wenn ja, wie?) für ∆t → 0 und ∆s → 0 ? • Konsistenz: liegt vor, wenn für ∆s → 0 und ∆t → 0 die Differenzengleichung in die Differentialgleichung übergeht. • Stabilität: |E| muß auch nach vielen Zeitschritten klein gegenüber den Lösungen bleiben! |E|k+1 < |E|k Ist ein Schema konsistent und stabil, dann konvergiert es auch! • Genauigkeit: Das Maß der Übereinstimmung der numerischen Lösung einerseits mit der exakten, oft nicht bekannten Lösung der Differentialgleichung — nicht mit dem natürlichen Vorgang (Annahmen!) — andererseits. • Anmerkung: Beim Vergleich von Rechenergebnissen mit Meßwerten sind also zusätzlich in die Betrachtung mit einzubeziehen: - Fehler in den Annahmen zur Physik - oft erhebliche Beobachtungsfehler - 128 - J.4. Stabilität und Genauigkeit J.4.1 Courant-Friedrichs-Lewy-Kriterium (zulässige Schrittweiten für explizite Verfahren, wenn Charakteristiken vorliegen) Bei den hier vorgestellten expliziten Verfahren gehen nur der rechte und linke räumliche Nachbarpunkt aus der vorigen Zeitstufe in die Lösung ein. (Die Lösung für P wird nur aus den beiden Punkten ◦ berechnet.) Die exakte Lösung entlang der Charakteristiken würde aber auf den Punkten L und R basieren! Es muß sichergestellt werden, daß diese beiden Punkte im Schema enthalten sind und nicht extrapoliert werden wie etwa bei L0 , R0 bei P 0 . Dazu muß gelten: Max{c + v, c − v} = c + |v| ≤ ∆s ∆t bzw. wenn |v| c : ∆t ≤ ∆s c oder auch: Cr ≤ 1.0 mit der Courantzahl Cr = ∆t (c + |v|) ∆s Das Kriterium gilt nicht für implizite Verfahren, da bei diesen alle Lösungen in der neuen Zeitebene über das Gleichungssystem mit allen Werten der vorherigen Zeitstufe verknüpft sind. - 129 - KAPITEL J - Differenzenverfahren J.4.2 Eine Stabilitätsanalyse für offenes Gerinne mit Lax-Verfahren J.4.2.1 Die Grundgleichungen ∂h ∂h ∂v +v + ISo + y =0 ∂t ∂s ∂s und ∂v ∂v ∂h +v +g + gIE = 0 ∂t ∂s ∂s werden mit dem Ziel, lineare Gleichungen zu erhalten, vereinfacht unter den Annahmen: ISo ≈ IE ≈ 0, ; v y ≈ y0 , ∂h ∂h ∂s ∂t Fr 1 und v (Froudezahl) ∂v ∂v . ∂s ∂t Es ergeben sich die linearen Wellengleichungen ∂h ∂v + y0 =0 ∂t ∂s J.4.2.2 und ∂v ∂h +g = 0. ∂t ∂s Analytische Lösung Durch nochmaliges Differenzieren der linearen Wellengleichungen nach s bzw. t erhält man h0 tt + y0 v0 st = 0 bzw. v0 st + gh0 ss = 0, und durch Einsetzen folgt: h0 tt = y0 gh0 ss Bei Differenzieren nach t bzw. s: v0 tt = y0 gv0 ss Von den möglichen Lösungen dieser DGLn wird nur die harmonische Lösung betrachtet: h(s, t) = Heiωs eiβt mit √ β = ± gy0 ω = ±ωc, v(s, t) = V eiωs eiβt und V = −H β . ωy0 - 130 - (J.7) J.4. Stabilität und Genauigkeit Realteil der harmonischen Lösung bezüglich h: o n n Re {h(s, t)} = Re Heiωs eiβt = Re Hei(ωs+βt) o = H cos(ωs + βt) (Eulersche Formel) h(s, t) = const., wenn ωs + βt = const., d.h. β ω ∆s √ √ = − = ∓ gy0 = ∓ gy0 . ∆t ω ω √ Die Fortpflanzungsgeschwindigkeit c = ∓ gy0 ist von der Wellenfrequenz unabhängig. Die Welle ändert ihre Form beim Fortschreiten in Raum und Zeit nicht (Linearisierung). Verifikation der Lösung durch Einsetzen in die Differentialgleichung, hier also in die linearen Wellengln. (J.7): Heiωs eiβt iβ + y0 V eiωs eiβt iω = 0 ⇔ V eiωs eiβt iβ + gHeiωs eiβt iω = 0 Hβ + y0 V ω = 0 ⇔ V β + gHω = 0 ⇔ V = −H β y0 ω Einsetzen in die erste Gleichung liefert −H β2 + gHω = 0 y0 ω ⇒ gy0 ω 2 = β 2 √ β = ± gy0 ω ⇒ √ Mit β = ± gy0 ω sind die harmonischen Lösungen h(s, t), v(s, t) Lösungen der linearen Wellengleichung. Analytische Lösung t √ spezieller Fall: β = + gy0 ω 2π/β ωs + βt = 2π ωs + βt = const. H s v 2π/ω - 131 - KAPITEL J - Differenzenverfahren J.4.2.3 Stabilitätsanalyse für das Lax-Verfahren (mit voller Mittelung auf alter Zeitstufe) Die Differenzengleichungen lauten: v(s + ∆s, t) − v(s − ∆s, t) 2h(s, t + ∆t) − h(s + ∆s, t) − h(s − ∆s, t) + y0 =0 2∆t 2∆s h(s + ∆s, t) − h(s − ∆s, t) 2v(s, t + ∆t) − v(s + ∆s, t) − v(s − ∆s, t) +g =0 2∆t 2∆s Die strenge Lösung (harmonische Gleichungen) wird in die Differenzengleichungen eingesetzt; damit folgt: i i H h iβ∆t iω∆s V h iω∆s −iω∆s iβt iωs −iω∆s 2e −e − e e e + y e − e eiβt eiωs = 0 0 | {z } {z } 2∆t 2∆s | −2 cos(ω∆s) 2i sin(ω∆s) (Eulerformel) i i V h iβ∆t H h iω∆s 2e − eiω∆s − e−iω∆s eiβt eiωs + g e − e−iω∆s eiβt eiωs = 0 2∆t 2∆s bzw. nach Kürzen: 1 iβ∆t y0 e − cos(ω∆s) H + i sin(ω∆s) V = 0 ∆t ∆s i g 1 iβ∆t sin(ω∆s) H + e − cos(ω∆s) V = 0 ∆s ∆t Dieses homogene lineare Gleichungssystem für H und V besitzt nur dann nichttriviale Lösungen, wenn die Determinante der Koeffizientenmatrix verschwindet: 1 iβ∆t e − cos(ω∆s) ∆t 2 − i2 gy0 sin(ω∆s) ∆s 2 = 0. Auflösung nach eiβ∆t ergibt: ∆t √ eiβ∆t = cos(ω∆s) ± i gy0 sin(ω∆s). ∆s Im Folgenden wird schnitt.) √ ∆t gy0 ∆s mit r bezeichnet. (Das ist die Courantzahl Cr aus dem vorigen Ab- - 132 - J.4. Stabilität und Genauigkeit Untersuchung des Ergebnisses: ∆s √ = gy0 = c , ∆t 1. Fall: r = 1, d.h. Orts- und Zeitschritt den Charakteristiken entsprechend gewählt. eiβ∆t = cos(ω∆s) ± i sin(ω∆s) = e±iω∆s (Euler-Formel) √ ±iω∆t gy0 = e ; √ β = ±ω gy0 Differenzengleichung, Differentialgleichung und Charakteristikenverfahren haben dann identische Lösungen, sie werden nicht gedämpft. 2. Fall: r 6= 1, komplexes β iβ∆t = ln [cos(ω∆s) ± ir sin(ω∆s)] Für komplexes z gilt: z = |z|eiϕ , ϕ = arg z = arctg Im(z) Re(z) und ln z = ln |z| + i arg z, damit wird iβ∆t = i 1 h 2 ln cos (ω∆s) + r2 sin2 (ω∆s) ± i arctg(r tg(ω∆s)) 2 Re(β) = βR = ± Im(β) = βI = − 1 arctg(r tg(ω∆s)) ∆t h i 1 ln 1 + r2 − 1 sin2 (ω∆s) 2∆t und der Wasserstand kann geschrieben werden als h(s, t) = Heiωs eiβR t e−βI t = Hei(ωs+βR t) e−βI t . Dabei ist H die Amplitude, ei(ωs+βR t) beinhaltet die Geschwindigkeit und e−βI t die Dämpfung oder Anfachung. Die Phasengeschwindigkeit ergibt sich aus ωs + βR t = const ; ∆s βR =− ω ∆t - 133 - KAPITEL J - Differenzenverfahren und die Näherung für die Wellengeschwindigkeit c zu c̃ = βR 1 ∆s =− =∓ arctg(r tg(ω∆s)) . ω ∆t ω ∆t Stabilität: Für βI > 0 wird der Wasserstand (und ein in ihm enthaltener Fehler!) im Laufe der Zeit gedämpft, für βI < 0 angefacht (instabil!). βI = − h i 1 ln 1 + r2 − 1 sin2 (ω∆s) 2∆t ∆s c̃ = ∓ ω∆s ω∆t = ∆t βI = 0, das ist die exakte Lösung. b.) für r < 1: βI > 0, numerische Dämpfung, stabil. c.) für r > 1: βI < 0, Anfachung, instabil. Dieser Fall braucht nicht weiter untersucht zu werden. a.) für r = 1: Konvergenz: βR und βI für verschwindende ∆t und ∆s bei r = lim {βR } = lim ∆t→0 ∆s→0 lim {βI } = lim ∆t→0 ∆s→0 ∆t→0 ∆s→0 < 1: 1 1 √ ± arctg r tg(ω∆s) = ± rω∆s = ω gy0 ∆t ∆t ∆t→0 ∆s→0 ∆t √ ∆s gy0 h i 1 ln 1 + r2 − 1 sin2 (ω∆s) = 0 2∆t Die numerische Lösung konvergiert zur exakten. Abschätzung der Dämpfung: Bei vorgegebener Ortsschrittweite ∆s ergibt sich für unterschiedliche Wellenfrequenzen ω die numerische Dämpfung in Abhängigkeit vom gewählten Zeitschritt ∆t bzw. der Anzahl nt = t/∆t von Zeitschritten, die zur Berechnung der Lösung h(s, t) benutzt werden. Beispiel: Wellenlänge 4 ∆s, βI ω= 2π L = π 2 ∆s h i 1 ln 1 + r2 − 1 sin2 (ω∆s) 2∆t 1 π = − ln 1 + r2 − 1 sin2 2∆t 2 ! 1 ln r = − ln r2 = − ; βI ≥ 0 (Stabilität) 2∆t ∆t = − Damit wird der Dämpfungsterm zu t ! t e−βI t = e ∆t ln r = r ∆t = rnt = √ ∆t gy0 ∆s t ∆t r ≤ 1(Stabilität) = c ∆t ∆s nt . Die numerische Dämpfung nimmt also bei verkleinertem r (Courantzahl r < 1) mit der Anzahl √ der Zeitschritte nt zu! Jede Verkleinerung des Zeitschrittes unter die optimale Größe ∆t = ∆s/ gy0 ergibt bei dem hier untersuchten Lax-Verfahren starke numerische Dämpfung. - 134 - J.5. Ergänzungen J.5 Ergänzungen J.5.1 Ordnung des Diskretisierungsfehlers Die Formel von Taylor für den Funktionswert einer Funktion f (x) an den Stellen x = a ± h lautet — dabei wird die Existenz der Ableitungen in a vorausgesetzt —: f (a ± h) − f (a) = n−1 X l=1 hl (l) f (a) · (±1)l + Rn l! Für n = 2 erhält man: f (a + h) − f (a) h h2 = f 0 (a) + f 00 (a) + f 000 (a) + . . . h 6{z |2 } R2 Mit Ausnahme des Restgliedes R2 ist diese Formel identisch mit denen für die Zeitableitungen beim in∧ stabilen, Lax- und Upstream-Schema (h = ∆t) und mit der für die Ortsableitungen beim Upstream∧ Verfahren (h = ∆s). Der Fehler dieser Verfahren liegt also im Restglied (das zu 0 gemacht wird), in ihm kommt die Schrittweite in erster Potenz vor. Man schreibt dafür: Fehler O(h). Für n = 3 erhält man: f (a + h) − f (a) h h2 h3 = f 0 (a) + f 00 (a) + f 000 (a) + f (4) (a) + . . . h 2 6 24 und f (a − h) − f (a) h h2 = −f 0 (a) + f 00 (a) − f 000 (a) + − . . . h 2 | 6 {z } R3 sowie nach Subtraktion und Division durch 2 f (a + h) − f (a − h) h2 = f 0 (a) + f 000 (a) + . . . 2h |6 {z } (J.8) R3 Das ist die Differenzenformel für die Ortsableitungen beim Lax-, Leap-Frog- und Lax-WendroffVerfahren (h = ∆s) sowie für die Zeitableitungen des Leap-Frog-Schemas. Das Restglied enthält nur noch h2 : Fehler O(h2 ). Durch Addition beider Reihenentwicklungen sowie Division durch h f (a + h) + f (a − h) − 2f (a) h2 (4) 00 = f (a) + f (a) + . . . h2 |6 {z } (J.9) R4 erhält man übrigens eine Differenzenformel für 2. Ableitungen mit dem Fehler O(h2 ). Durch Taylorreihenentwicklung für die Stellen a ± 2h, a ± 3h usw. lassen sich genauere Differenzenschemata gewinnen. Mit der Genauigkeit steigt dabei auch der Rechenaufwand. - 135 - KAPITEL J - Differenzenverfahren J.6 Ergänzung: Charakteristiken-Verfahren Die Grundgleichungen der instationären Gerinneströmung erlauben nur mit weiteren Annahmen (z.B. Reibungsfreiheit, kleine Amplituden) geschlossene Lösungen, die wir hier nicht behandeln wollen. In der Praxis wird man numerische Lösungen mit Hilfe von Differenzen- oder Finite-Element-Verfahren benutzen. Ein Lösungsverfahren, das gewissermaßen den Schritt von der analytischen zur numerischen Lösung vollzieht, ist das Charakteristikenverfahren. Es vermittelt anschaulich das Phänomen der Wellenausbreitung und sollte prinzipiell vor der Anwendung rein numerischer Verfahren beherrscht werden. Dabei beschränken wir uns hier auf einen Rechteckquerschnitt (q = vy). Die Kontinuitäts- und Bewegungsqleichung lauten (s. Gl. J.1 und J.2) bei Verwendung der Wassertiefe y anstelle des Wasserstandes h: ∂v 1 + ∂s y ∂y 1 + ∂s g ∂v ∂v +v ∂t ∂s ∂y ∂y +v ∂t ∂s = 0 Kontinuität (J.10) Bewegung (J.11) + IE − ISo = 0 √ Multipliziert man die Kontinuitätsgleichung mit dem Faktor c = gy (der Fortpflanzungsgeschwindigkeit einer Störung), sowie die Impulsgleichung mit der Erdbeschleunigung g, dann erhält man c g ∂v c + ∂s y ∂y ∂y +v ∂t ∂s = 0 ∂y ∂v ∂v + +v + g (IE − ISo ) = 0 ∂s ∂t ∂s Addition bzw. Subtraktion dieser Gleichungen führt zu: ∂v ∂v g ∂y ∂y (v + c) + + (v + c) + + g(IE − ISo ) = 0 ∂s ∂t c ∂s ∂t ∂v ∂v g ∂y ∂y (v − c) + − (v − c) + + g(IE − ISo ) = 0 ∂s ∂t c ∂s ∂t dF ∂F ds ∂F Unter Verwendung der totalen Ableitung einer Funktion F nach der Zeit, = · + , folgt dt ∂s dt ∂t aus den vorstehenden Gleichungen dv g dy ± + g (IE − ISo ) = 0 dt c dt und mit y = c2 /g sowie dy d(c2 /g) = dt dt = 2c dc g dt d (v ± 2c) = −g (IE − ISo ) dt wobei ds √ = v ± c = v ± gy dt - 136 - folgt (J.12) ist. (J.13) J.6. Ergänzung: Charakteristiken-Verfahren (J.12) beschreibt also die zeitliche Änderung der Größe v ± 2c aus der Sicht eines Beobachters, der ds = v ± c bewegt. Der Weg des Beobachters kann nun in der s-t-Ebene sich mit der Geschwindigkeit dt graphisch dargestellt werden, wodurch sich Möglichkeiten zur Lösung obiger Gleichungen ergeben. strömender Abfluß schießender Abfluß v < c; F r < 1 v > c; F r > 1 v v =√ ) c gy Die Linien der oben abgebildeten Kurvenscharen werden Charakteristiken genannt. J.6.1 Fr = Die einfache Welle im Gerinne mit Normalabfluß Im folgenden soll ein Strömungsvorgang betrachtet werden, bei dem der Reibungseinfluß die Wirkung der Sohlneigung näherungsweise aufhebt, d.h.:IE ' ISo . (J.12) reduziert sich somit auf d √ (v ± 2 gy) = 0 dt In diesem Fall ist also die Größe v ± 2 (J.14) √ gy konstant entlang ds √ = v ± gy. dt Wir betrachten nun eine Welle, für die diese Bedingung gültig ist und die in einen ungestörten Bereich mit Normalabfluß einläuft (einfache Welle). Das Gerinne sei außerdem so lang, daß im betrachteten Zeitraum keine Reflektionen vom unteren Ende zurückkommen. In dem abgebildeten Kanal herrsche Normalabfluß, ∂y ∂y d.h. = 0, = 0 ∂s ∂t ∂v ∂v sowie = 0, = 0; ∂s ∂t bei horizontaler Sohle sei stehendes Wasser vorausgesetzt. Am linken Rand gibt man y(t) oder v(t) vor, so daß sich die Welle nach rechts bewegt (s. Abb. rechts). Hier√ bei ist vn + gyn die Geschwindigkeit des Wellenfußes. - 137 - KAPITEL J - Differenzenverfahren In dem rechten Charakteristikendiagramm ist vA0 = vB 0 = vn sowie yA0 = yB 0 = yn , so daß wir wegen Gl. (J.14) für die nach links laufenden Charakteristiken durch A und B √ √ vA − 2 gyA = vn − 2 gyn vB − 2 √ √ gyB = vn − 2 gyn und (J.15) erhalten. (J.16) Hieraus folgt: vA − 2 √ gyA = vB − 2 √ gyB Andererseits gilt: √ vA + 2 gyA = vB + 2 gyB . √ Die Addition der beiden letzten Gleichungen führt zu vA = vB und analog yA = yB . Also sind entlang der rechtslaufenden Charakteristiken v und y und damit auch die Neigung ds √ = v + gy konstant, so daß diese Charakteristiken Geraden sind. Die Neigung der durch A und B dt rechtslaufenden Charakteristik berechnet sich aus ds √ = vA + gyA dt Mit Gl. (J.15) erhalten wir schließlich bzw. ds dt √ √ = vn + 3 gyA − 2 gyn ds dt = 3 vA vn √ − + gyn 2 2 Wegen vA 6= vn ; vB 6= vn und yA 6= yn ; yB 6= yn ist die Neigung der linkslaufenden Charakteristiken, ds √ = v − gy, nicht konstant. dt Somit sind diese Kurven für den Fall der einfachen Welle im allg. nicht gerade. - 138 - J.6. Ergänzung: Charakteristiken-Verfahren Die Charakteristikenschar der einfachen Welle ohne Reflektionseinwirkung hat also folgende Eigenschaften, wenn wir für vA und yA verallgemeinernd v(t) bzw. y(t) setzen: 1. Alle rechtslaufenden Charakteristiken sind Geraden (im allg. keine Parallelen). 2. Entlang jeder rechtslaufenden Charakteristik sind y, v und v + 2 √ gy konstant. p √ 3. Für jede linkslaufende Charakteristik gilt: v(t) − 2 gy(t) = vn − 2 gyn ; d.h.: wenn am linken Rand y(t) oder v(t) vorgegeben wird, dann ist jeweils der andere Wert berechenbar. 4. Für die Steigungen der rechtslaufenden Charakteristiken gelten folgende Beziehungen: q ds √ = vn + 3 gy(t) − 2 gyn , dt bzw. 3 v(t) vn √ ds = v(t) − + gyn , dt 2 2 wenn y(t) vorgegeben, wenn v(t) vorgegeben ist. 5. Für den Fall einer Sunkwelle ergibt sich ein Auffächern“ der Charakteristiken in Richtung ” steigender s-Werte, bei einer Schwallwelle dagegen ein Zusammenlaufen“ derselben (s. nächste ” Abb.). Daraus folgt, daß sich eine Sunkwelle abflacht, eine Schwallwelle aufsteilt. Kommt es für den Fall einer Schwallwelle zu einem Schneiden zweier Charakteristiken – Punkt S in der Abb.–, so beginnt der jeweils höhere Teil der Wellenfront den niedrigeren zu überholen — der Schwall bricht. a) Sunkwelle b) Schwallwelle Aber auch schon bevor der Schwall bricht, wird in der steilen Wellenfront die eingangs des Abschnitts genannte Voraussetzung schwach gekrümmter Stromfäden verletzt. Der Schwall läuft √ dann mit einer Geschwindigkeit, die zwischen den vj + gyj liegen, die sich vor und hinter dem Schwall errechnen. J.6.2 Einfache Welle mit Reflektionen Überlagern sich im Gerinne rechts- und linkslaufende Wellen (z.B. durch Reflektionen an den Enden), so gilt die einfache Feststellung nicht mehr, daß alle rechtslaufenden Charakteristiken gerade sind. Wir greifen zurück auf Gleichungen (J.12) und (J.13) und setzen wiederum IE = ISo : - 139 - KAPITEL J - Differenzenverfahren d (v ± 2c) = 0 dt ds auf = v ± c mit dt c = √ (Die Annahme IE ' ISo ist im Interesse einer einfachen Darstellung getroffen worden, ohne daß dies grundsätzlich nötig wäre.) gy. Durch den Punkt L sei die Charakteristik ds = v + c gezeichnet, dt entlang der der Ausdruck v + 2c konstant sein muß. Entsprechend ist durch den Punkt R die Charakteristik ds = v − c gezeichnet, dt für die der Ausdruck v − 2c konstant ist. Im Schnittpunkt P, der durch die beiden Charakteristiken festgelegt ist, lassen sich nun cP bzw. die Wassertiefe yP und die Fließgeschwindigkeit vP berechnen, wenn die entsprechenden Werte yL , vL , yR und vR bekannt sind: vL + 2cL = vP + 2cP vR − 2cR = vP − 2cP . sP − sL = tP − tL vP + cP + vL + cL 2 = zL die weiteren sind eine Differenzenapproximation sP − sR = tP − t R vP − cP + vR − cR 2 = zR von Bis hier sind die Gleichungen exakt, ds = v ± c. dt Hieraus lassen sich die unbekannten Größen vP , cP , tP und sP in 4 Schritten explizit bestimmen: vL + vR + cL − cR 2 vP − vR + cR ; yP 2 sR − sL + tL zL − tR zR zL − z R a) vP = b) cP = c) tP = d) sP = sR + zR (tP − tR ) Eine systematische Berechnung für das gesamte Gerinne läßt sich dann wie folgt durchführen: - 140 - J.7. Literaturhinweise Anfangsbedingungen: Vorzugeben sind die Werte c und v für alle auf der Abszisse (t = 0) gelegenen Punkte. Aus diesen Größen, zusammen mit den dazugehörenden s-Werten, ergeben sich dann nach obigem Gleichungssystem die entsprechenden Werte für den folgenden Zeitpunkt. Randbedingungen: An den Rändern (s = 0, s = l) gibt man für jeden Zeitpunkt den Wert c bzw. y oder v vor. Somit bleiben an den Randpunkten zwei Unbekannte, für die dann zwei Gleichungen zur Verfügung stehen. Tritt ein Brechen von Wellen ein, so bedeutet das wie schon erwähnt ein Schneiden von Charakteristiken gleicher Richtung. J.7 Literaturhinweise [1] Dietrich Marsal: Finite Differenzen und Elemente; Springer Verlag, 1989 [2] Dietrich Marsal: Die numerische Lösung partieller Differentialgleichungen; B.I. Wissenschaftsverlag, 1976 [3] Graf Finck v. Finckenstein: Einführung in die numerische Mathematik, Bd. 2; Carl Hanser Verlag, 1978 - 141 - frei für Notizen Kapitel K Differenzenverfahren II: Transport in Fließgewässern - 143 - KAPITEL K - Transportgleichung K.1 Einleitung In Gewässern werden Stoffe verschiedener Art und Energie transportiert: • Abwässer aus Haushalten, Industrie und Landwirtschaft • Salz aus Kalibergbau und dem Meer (in Ästuaren) • Toxine aus Deponieleckagen • Sediment in Oberflächengewässern (Schlamm, Sand und Geschiebe) • Wärme aus Kühlwassereinleitung von Kraftwerken Falls die Einleitung beabsichtigt ist: Simulation des Transports, um Umwelteinflüsse innerhalb verträglicher Grenzen zu halten. Bei Unglücksfällen (z.B. in der chemischen Industrie) sind die Auswirkungen – auch eventueller Gegenmaßnahmen – abzuschätzen. Beschränkung hier auf eindimensionalen Transport eines nichtreaktiven Tracers bei zeitlich und örtlich konstanter Fließgeschwindigkeit. Literaturhinweis: Häfner, Sames, Voigt: Wärme und Stofftransport – Mathematische Methoden –; Springer Berlin, Heidelberg, New York,. . . 1992 K.2 Eindimensionale Transportgleichung Das Thema ist nicht unkompliziert. Zur Verdeutlichung werden wir ein Gedankenmodell benutzen: Ein endloser Zug oder ein Förderband kommen aus einem Tunnel mit einer Geschwindigkeit v. Wir sehen nicht, was sich links vom Portal abspielt, dieses entspricht dem linken Rand unseres Modells. Das Band sei beladen mit einem festen Körper und wir betrachten den Zug zu einem Zeitpunkt t, der etwas nach t0 liegt. Letzteres ist die Zeit, zu der die vordere Kante des Festkörpers gerade den Tunnel verließ. Die Vorderkante hat also ab Portal den Weg x = v(t − t0 ) hinter sich gelassen. A: Festkörper Wir modifizieren das Modell ein wenig: Anstelle des Festkörpers sei nun das Band beladen mit Sand, der vorn von Null auf die endgültige Höhe ansteigt. Den (negativen!) Anstieg erhalten wir durch die örtliche erste Ableitung ∂/∂x. B: Sandfracht Natürlich ist sichergestellt, daß nichts vom Förderband herunterfällt! Das entspricht dem Prinzip der Massenerhaltung. - 144 - K.2. Eindimensionale Transportgleichung K.2.1 Advektion Im rechts skizzierten Fall, einer gedachten Strömung mit konstanter Geschwindigkeit v – ohne jede turbulente Schwankung – und einer Tracerkonzentration C [Masse/Volumen] ohne Quellen oder Senken, folgt aus einfachen geometrischen Betrachtungen ∂C ∂C +v =0 ∂t ∂x (K.1) Allgemein gilt in mehreren Richtungen und für veränderliche Geschwindigkeiten: ∂C + div (ṁ) = qm ∂t (Massenerhaltung) (K.2) mit dem Massenstrom ṁ und dem Quellterm qm . Im eindimensionalen Fall ergibt sich mit ṁ = vC und ∂v/∂x = 0 sowie qm = 0 auch hieraus Gl. (K.1). Zurück zu unserem eingangs beschriebenen Gedankenmodell (Sandversion): Ein Beobachter, der sich an einem festen Ort befindet (Herr Euler in der Nähe des Portals), sieht zunächst einen zeitlichen Anstieg der Sandhöhe. Diese entspricht der Konzentration C. Im Falle des Festkörpers gäbe es eine sprunghafte Änderung. Nichts anderes beschreibt Gl. (K.1). K.2.2 K.2.2.1 Diffusion und Dispersion Molekulare Diffusion In jedem Fluidgemisch ruft die Brownsche Molekularbewegung Diffusion hervor, einen Ausgleich unterschiedlicher Konzentrationsgefälle. Sie wird durch das erste Ficksche Gesetz beschrieben: ṁ = −Dm grad C (Massenstrom infolge molekularer Diffusion) (K.3) Der Diffusionskoeffizient Dm [Fläche/Zeit] ist eine temperaturabhängige Materialkonstante. Die zeitliche Änderung der Konzentration an einem festen Ort allein aus Diffusion ergibt sich mit Gl. (K.2) zu ∂C ∂2C = Dm ∂t ∂x2 Das soll durch die nebenstehenden Bilder verdeutlicht werden. Die Anfangsverteilung wird eine gewisse Zeit lang durchmischt, wodurch sich die Gradienten abflachen und die Konzentration im Punkt M steigt. Auch nimmt die (positive) Krümmung ab, weshalb sich der Anstieg in M verlangsamt. Eine vollständige Durchmischung wird erst nach unendlich langer Zeit erreicht. Die Fläche unter den Kurven (entspricht der Masse des gelösten Stoffes) ist zu allen Zeiten gleich. - 145 - KAPITEL K - Transportgleichung K.2.2.2 Turbulente Diffusion Reale Strömungen sind in der Regel mehr oder weniger turbulent. Die Turbulenz bewirkt eine Durchmischung genau wie die Brownsche Molekularbewegung. Die dadurch entstehende Diffusion ist erheblich größer als die molekulare, wird aber mit derselben Gleichung mathematisch erfaßt: ṁ = −DT grad C (Massenstrom infolge turbulenter Diffusion) Zu unsymmetrischen Konzentrationsverläufen Die Abbildung zeigt einen Konzentrationsverlauf mit positiver zweiter Ortsableitung. Die mittleren Geschwindigkeitsschwankungen δv erhöhen die Konzentration im Schnitt M, wenn sie von links einwirken (δv > 0), und vermindern sie von rechts einwirkend (δv < 0). Bei im Mittel gleicher Größe, wie vorausgesetzt, findet auch bei v = 0 ein Transport nach rechts statt, weil wegen der positiven zweiten Ableitung der Unterschied CL − CM größer ist als CM − CR . Betrachtet man den Abschnitt L - R allein – mit gedachtem undurchlässigen Rand, so stellt sich dort letztendlich eine vollständige Durchmischung ein, mit einem Konzentrationswert größer als CM . K.2.2.3 Dispersion Die oben benutzte Geschwindigkeit v stellt einen Mittelwert (hier mit v̄ bezeichnet) im Querschnitt A und einer Zeitspanne T über die lokal sowie zeitlich unterschiedlichen Geschwindigkeiten v dar, ebenso rechnen wir bei einem eindimensionalen Modell mit Mittelwerten der Konzentration C̄: R RR v̄ = R RR v dAdt T A = T A R RR v̄ + δv dAdt T A und C̄ = T A R RR C dAdt T A T A = C̄ + δC dAdt T A T A mit verschwindenden Integralen über die Schwankungen δv(y, z, t) und δC(y, z, t) . Z ZZ Z ZZ δC dAdt δv dAdt = 0 = T T A A Sei beispielsweise über die Breite B eines Kanalabschnitts eine parabolische Verteilung der Fließgeschwindigkeit angenommen, ebenso verteilt die Konzentration links von der Stelle x = 0. Mit der normierten Koordinate r über die Breite gilt v̄ = vmax (1 − r2 ) und C̄ = Cmax (1 − r2 ). Wir betrachten hier nicht die (meist kompliziertere) Verteilung über die Tiefe. Nachfolgend ergibt sich: v̄ = +1 R v dr/2 = vmax r − r3 /3 −1 +1 −1 /2 = 32 vmax , analog ist C̄ = 23 Cmax . Bei den in der Natur meist vorkommenden turbulenten Strömungen liegt v̄ erheblich näher an vmax . Die mathematische Beschreibung ist ganz analog zu der der Diffusion. ṁ = −D∗ grad C (Massenstrom durch Dispersion) - 146 - (K.4) K.2. Eindimensionale Transportgleichung Der Dispersionskoeffizient D∗ ist hier – wie auch DT aus turbulenter Diffusion – jedoch keine Stoffkonstante, denn die Ursachen sind die vorgenommenen Mittelungen der Geschwindigkeit und der Konzentration. In einem (hypothetischen!) bis auf Molekülgröße aufgelösten dreidimensionalen Modell gäbe es keine Dispersion; wir könnten mit den tatsächlichen ortsabhängigen Größen rechnen. D.h. die Dispersion hängt von der mehr oder weniger feinen Diskretisierung ab. Dennoch nennen wir den hier behandelten Effekt physikalische Dispersion im Gegensatz zur numerischen, die sich aus dem gewählten Rechenverfahren ergibt – später. Rechnen wir mit den Mittelwerten von Geschwindigkeit und Konzentration, dann erhalten wir nach einer gewissen Zeit t den nebenstehenden Zustand, der durch unser Gedankenmodell (A: Festkörper) veranschaulicht wird. Links ist die Draufsicht und rechts die Verteilung über die Länge dargestellt. Ganz anders sähe es aus, wenn wir die Verteilungen über die Breite zunächst berücksichtigen. Links die Draufsicht und rechts die Längsverteilung (dicke Linie), nachdem wir nachträglich über die Breite gemittelt haben. Die dunklen Flächen stellen die Differenzen gegenüber der Rechnungen mit Mittelwerten dar. Sind diese beiden gleich groß? (Massenerhaltung?) a) Rechnung mit Mittelwerten: Im Zeitraum ∆t tritt die Masse m = B · ∆t v̄ C̄ = B · ∆t vmax Cmax · fM über den linken Rand in das Gebiet ein, mit dem Faktor fM = 4/9 = 0, 4444. b) Mit den quadratischen Verteilungen ergibt sich dagegen m = 1 B · ∆t 2 Z+1 vmax (1 − r2 ) Cmax (1 − r2 ) dr = B · ∆t vmax Cmax · fQ mit −1 fQ = 1 2 Z+1 2 2 Z1 (1 − r ) dr = −1 0 1 2 3 1 5 1 − 2r + r dr = r − r + r = 8/15 = 0, 5333 > fM ! 3 5 0 2 4 Bei der letzten genaueren Rechnung tritt also mehr Masse ein; gegenüber der vereinfachten Rechnung mit Mittelwerten findet ein zusätzlicher Transport statt. Dieser wird durch den Dispersionskoeffizienten D∗ modelliert. K.2.2.4 Vollständige Transportgleichung Obwohl von unterschiedlicher Herkunft, werden beide Koeffizienten wegen der identischen mathematischen Form zu einem Gesamtkoeffizienten D = Dm + Dt + D∗ zusammengefaßt. (Die physikalische Dispersion ist meist ein Vielfaches der Diffusion.) Der Massenstrom aus Advektion, Diffusion und Dispersion ist damit ṁ = vC − D grad C und Gl. (K.2) wird zu ∂C = −div (vC − D grad C) + qm ∂t woraus für eine Richtung x mit v =const. folgt: ∂C ∂C ∂2C = −v + D 2 [+qm ] ∂t ∂x ∂x - 147 - (K.5) (K.6) KAPITEL K - Transportgleichung Bei quell- und senkenfreier Strömung entfällt der Term [+qm ]. Er wird ab hier nicht weiter berücksichtigt, da ein Tracer wie hier vorausgesetzt mit der Umgebung nicht reagiert, also nicht abgebaut oder erzeugt wird. Beim Wärmetransport darf er nicht entfallen, da an Oberfläche, Boden und Seiten Wärme abgegeben oder aufgenommen werden kann. Veranschaulichen können wir uns die Gesamtwirkung mit Hilfe unseres Gedankenmodells: Wir beobachten einen Zug mit der Geschwindigkeit v = 2 m/s, der einen Sandkörper geladen hat. Die vordere senkrechte Kante tritt zur Zeit t0 = 0 s aus dem Tunnel aus. Fünf Minuten später, zur Zeit tc = 300 s, beobachten wir, daß der Sandkörper abrupt endet. Wie sieht die Situation zur Zeit t1 = 700 s aus? Zu beachten ist, dass das Gleis etwas holperig sei und den Zug entsprechend durchrüttelt. Einfach ist der advektive Transport darstellbar. Das Vorderende ist seit 700 s im System, die Hinterkante seit t1 −tc = 400 s. Sie haben also 1,4 km bzw. 800 m zurückgelegt. Diese Situation ist durch das gestrichelte Rechteck angedeutet. Nun wurde aber der Sand geschüttelt – Diffusion –, wodurch die vorher senkrechten Kanten allmählich abgebröckelt sind. (Dabei fällt nichts nebenbei – Massenerhaltung.) D.h. dabei wird der Sandklotz ausgerundet und etwas länger ohne daß sich die Größe seiner Seitenfläche ändert. Da das vordere Ende schon 300 s länger auf der Holperstrecke gefahren ist als das hintere, ist hier die Ausrundung weiter fortgeschritten als dort. Es ist durchaus erlaubt, beide Transportarten getrennt zu behandeln und nachher zu addieren. Die Transportgleichung ist eine lineare partielle Differentialgleichung und für alle linearen Systeme ist Superposition zulässig. K.2.3 Anfangs- und Randbedingungen Anfangsbedingungen: Zu Beginn der Berechnung (t = t0 ) müssen die Konzentrationswerte C (0) im gesamten Lösungsgebiet bekannt sein. Randbedingungen: Am Einstromrand wird die Konzentration Cein über den gesamten Zeitraum der Simulation (t0 ≤ t ≤ te ) vorgegeben. Bei Einleitung eines Stoffs ṁ [Masse/Zeit] in einen Fluidstrom Q = vA [Volumen/Zeit] erhöht sie sich um ∆Cein = ṁ/Q [Masse/Volumen]. Wäre der Ausstromrand so weit von Konzentrationsänderungen entfernt, daß diese ihn nicht errei(0) chen können, genügte dort die Vorgabe Caus = Caus . Um das Modellgebiet nicht unnötig weit auszudehnen, muß ein Mechanismus gefunden werden, ankommende Konzentrationen über den Ausstromrand hinweg zu befördern, der keine Störungen nach oberstrom erzeugt (nichtreflektierende Randbedingung K.3.3). Sinnvolle Kombinationen für Tests: Besonders geeignet zum Testen der nachfolgend entwickelten numerischen Lösungsschemata sind einfache Situationen, zu denen eine geschlossene analytische Lösung existiert, beispielsweise: - 148 - K.3. Numerische Lösungsschemata Test 1 analytische Lösung mit der komplementären Gauss’schen Glockenkurve 1 x − vt √ C(x, t) = erfc 2 2 Dt x + vt vx/D √ + erfc e 2 Dt analytische Lösung nur für D = 0 Test 2 C(x, t2 ) = C(x − v(t2 − t1 ), t1 ) (Translation des Anfangszustands mit der Geschwindigkeit v) Für v = 0 und D > 0 muß sich der Peak symmetrisch ausrunden und ausbreiten. (Im Anfangszustand mehr zur Mitte hin anordnen!) K.3 Numerische Lösungsschemata K.3.1 Zentrale Differenzen Das Lösungsgebiet wird in Ortsrichtung durch n Gitterpunkte i in gleichem Abstand ∆x diskretisiert. In Zeitrichtung werden ab dem Anfangszustand in (gleichen) Zeitschritten ∆t neue Zustände berechnet, die wieder als Ausgangswerte für den nächsten Zeitschritt dienen. Das Verfahren ist eng verwandt mit dem Preissmann-Schema J.3.1. t 6 (1) y y y unbekannte Zeitstufe 6 6 (1 − Θ1 )∆t ? 6 ∆t Approximationspunkt Θ1 ∆t (0) i i i−1 i - ∆x i? x i+1 - ∆x ? bekannte Zeitstufe Die Zeitableitung einer Variablen W an der Stelle i wird aus der Differenz von neuem(1) und altem(0) Wert gewonnen: (1) Wi ,t = Wi ,t ≈ (0) ∂Wi W − Wi ≈ i , wegen besserer Stabilität evtl. auch ∂t ∆t (0) (1) (0) (0) (0) W 2Wi − Wi−1 − Wi+1 + Wi+1 1 (1) Wi − i−1 = ∆t 2 2∆t | {z } Mittelwert(0) - 149 - (K.7) KAPITEL K - Transportgleichung Die Ableitungen in Ortsrichtungen gewinnt man aus den Taylorentwicklungen (vgl. Gln. (J.8) und (J.9)) der Funktion W = W (x) an der Stelle x = a: W (a + ∆x) = W (a) + ∆xW 0 + ∆x2 W 00 /2 + ∆x3 W 000 /6 + ∆x4 W 0000 /24 + . . . W (a − ∆x) = W (a) − ∆xW 0 + ∆x2 W 00 /2 − ∆x3 W 000 /6 + ∆x4 W 0000 /24 − . . . Subtraktion bzw. Addition beider Gleichungen ergeben W (a + ∆x) − W (a − ∆x) = 2∆xW 0 + ∆x3 W 000 /3 + . . . W (a − ∆x) + W (a + ∆x) = 2W (a) + ∆x2 W 00 + ∆x4 W 0000 /12 + . . . und nach kurzer Umformung W (a + ∆x) − W (a − ∆x) ∂W = W0 = + O(∆x2 ) ∂x 2∆x ∂2W = W 00 = ∂x2 (K.8) W (a − ∆x) + W (a + ∆x) − 2W (a) + O(∆x2 ) ∆x2 (K.9) Die Transportgleichung (K.6) wird mit Gl. (K.7) bis (K.9) im Gitterpunkt + diskretisiert als (1) Ci | (0) + + C + − Ci−1 C + + Ci+1 − 2Ci+ − Ci = −v i+1 +D i−1 , 2 ∆t 2∆x ∆x {z } | {z } | {z } ≈ ∂Ci /∂t ≈ ∂ 2 Ci /∂x2 ≈ ∂Ci /∂x nach Multiplikation mit ∆t und den Abkürzungen r = (1) Ci (0) v∆t D∆t sowie s = ∆x2 2∆x + + + + − 2Ci+ ) , + Ci+1 ) + r (Ci−1 − Ci−1 − s (Ci+1 = Ci wobei die Cj+ mit dem noch freien Parameter Θ1 interpoliert werden: (1) Cj+ = Θ1 Cj (0) − Θ0 Cj mit Θ0 = Θ1 − 1 . Einsetzen und Umordnen nach unbekannter bzw. bekannter Zeitstufe ergibt das Lösungsschema: (1) + Θ1 (s Ci+1 − s Ci−1 − r Ci−1 − r Ci+1 + 2r Ci ) (0) + Θ0 (s Ci+1 − s Ci−1 − r Ci−1 − r Ci+1 + 2r Ci ) Ci = Ci (1) (1) (1) (1) (1) (0) (0) (0) (0) (0) (1) (1) + Θ1 (s − r) Ci+1 (0) (0) + Θ0 (s − r) Ci+1 −Θ1 (s + r) Ci−1 + (1 + 2Θ1 r) Ci = −Θ0 (s + r) Ci−1 + (1 + 2Θ0 r) Ci oder (1) (0) , schließlich in Matrizenform: h = h −Θ1 (s + r) 1 + 2Θ1 r Θ1 (s − r) i −Θ0 (s + r) 1 + 2Θ0 r Θ0 (s − r) i (1) aj ∗ Cj (0) = bj ∗ Cj | {z rechte Seite (1) (0) Ci−1 Ci Ci+1 Ci−1 Ci Ci+1 (K.10) ;j = i − 1...i + 1 } bi Der Zeitwichtungsparameter (0.0 ≤ Θ1 ≤ 1.0 mit Θ0 = Θ1 − 1) bestimmt das weitere Vorgehen und die Eigenschaften des entstandenen Algorithmus. - 150 - K.3. Numerische Lösungsschemata Explizites Verfahren: Θ1 = 0 und Θ0 = −1 K.3.1.1 Gl. (K.10) vereinfacht sich zu: (0) (1) Ci = h s + r 1 − 2r r − s i Ci−1 Ci Ci+1 (1) An allen Innenpunkten 1 < i < n kann C (1) sofort berechnet werden. C1 am Einstromrand ist eine bekannte, weil vorgegebene, Konzentration. Der Ausstromrand wird weiter unten behandelt. Das Verfahren ist an die Courantbedingung für den Transport gebunden: 1.0 ≥ Cr = v∆t (= 2s) ∆x Die Courantzahl Cr beschreibt das Verhältnis von dem in einem Zeitschritt zurückgelegten Transportweg infolge Advektion zum Ortsschritt. Für Cr > 1.0 ist es immer instabil, denn das hieße, daß an einem Gitterpunkt Masse ankäme, die erst noch den vorigen passieren müßte – also außerhalb des Schemas läge. Stabilität ist auch nur dann gegeben, wenn das Neumannkriterium 0.5 ≥ Ne = D∆t (= r) ∆x2 eingehalten wird. Die Neumannzahl Ne gibt an, wie sehr infolge Dispersion/Diffusion Knicke in der 2 Konzentrationsverteilung geglättet werden. Für Ne = 0, 5 ergibt sich ∆t = ∆x 2D und bei drei neben0 und C 0 aus der Differenzengleichung einanderliegenden Werten CL0 , CM R 1 −C 0 CM M ∆t = D 0 −2C 0 +C 0 CL M R , ∆x2 zusammen 1 −C 0 )·2D (CM M ∆x2 = D 0 −2C 0 +C 0 CL M R ∆x2 1 = (C 0 + C 0 )/2. ; CM L R 0 über. Ein in M vorhandener Knick geht also während eines Zeitschritts in die Gerade CL0 CR Aber bei Ne > 0, 5 würde sich das Vorzeichen einer Krümmung umkehren! Das kann nicht sein. Eine weitere dimensionslose Zahl ist die Pecletzahl Pe = Cr/Ne = v ∆x/D. Sie kennzeichnet das Verhältnis von advektiver und dispersiver Konzentrationsänderung. K.3.1.2 Voll implizites Verfahren: Θ1 = 1 und Θ0 = 0 Gl. (K.10) vereinfacht sich zu: h −s − r 1 + 2r s − r i (1) Ci−1 Ci Ci+1 (0) = Ci Diese Gleichung ist die Zeile i eines tridiagonalen unsymmetrischen Gleichungssystems, das mittels eines speziell zugeschnittenen Gauss’schen Algorithmus gelöst werden kann, nachdem die Randbedingungen (s. u. K.3.3) eingearbeitet worden sind. Das Verfahren ist für beliebige Zeitschritte stabil. Seine Dämpfung ist groß und die Ergebnisse deswegen oft nicht besonders genau. - 151 - KAPITEL K - Transportgleichung K.3.1.3 Crank-Nicolson Ein besonders genaues Verfahren ergibt sich mit der Wichtung Θ1 = 0.5, (1) h −(s + r)/2 1 + r (s − r)/2 i Θ0 = −0.5: (0) Ci−1 h i Ci−1 Ci = (s + r)/2 1 − r (r − s)/2 Ci Ci+1 Ci+1 (1) Auch hier entsteht wieder ein tridiagonales Gleichungssystem für die Unbekannten Ci . Die herausragende Genauigkeit des Schemas beruht auf der gleichgewichtigen Einbeziehung von alter und neuer Zeitstufe. Das Crank-Nicolson-Verfahren ist wie das voll implizite an kein Stabilitätskriterium gebunden, es liegt in dieser Hinsicht gerade auf der Grenze. K.3.1.4 Andere Wichtungen Als sehr geschickt erwiesen hat sich, Gl. (K.10) vollständig zu programmieren mit erst durch die Eingabe festgelegter Zeitwichtung Θ1 . Dadurch können für jede Rechnung Stabilitäts- und Genauigkeitseigenschaften individuell angepaßt werden, Θ1 kann beliebig zwischen 0 und 1 variiert werden. In der Praxis liegen meist variable Geschwindigkeiten v vor (für die die Differenzengleichungen erweitert werden müssen!) und man wählt oft Θ1 = 0.55 . . . 0.6, um beide Bedürfnisse, Stabilität und Genauigkeit, zu erfüllen. K.3.2 Upstream-Schema für Advektion Es liegt nahe, das Upstream-Schema, siehe Abschnitt J.2.3, für den advektiven Transport einzusetzen. Die Ortsableitung der Konzentration in i nur aus Ci und der des oberstrom nächstliegenden Gitterpunkts Ci−1 zu bilden, trägt der Tatsache Rechnung, daß die Konzentration unterstrom den Punkt i durch Advektion nicht erreichen kann. Anstelle von Gl. (K.7) benutzen wir also + Ci+ − Ci−1 ∂Ci = + O(∆x) ∂x ∆x bei v > 0 (von links nach rechts). Damit erhält man (1) Ci | (0) + + C + − Ci−1 C + + Ci+1 − 2Ci+ − Ci = −v i +D i−1 , 2 ∆t ∆x {z } | ∆x {z } | {z } ≈ ∂Ci /∂t ≈ ∂ 2 Ci /∂x2 ≈ ∂Ci /∂x und mit den Abkürzungen wie zuvor (1) Ci (0) = Ci (1) + Θ1 (2s Ci (0) + Θ0 (2s Ci Ci = Ci + + + − 2s (Ci+ − Ci−1 ) + r (Ci−1 + Ci+1 − 2Ci+ ) (1) − 2s Ci−1 − r Ci−1 − r Ci+1 + 2r Ci ) (1) (1) (1) (1) (0) − 2s Ci−1 − r Ci−1 − r Ci+1 + 2r Ci ) (0) (0) (0) (0) (1) (1) − Θ1 r Ci+1 (0) (0) (0) −Θ1 (2s + r) Ci−1 + (1 + 2Θ1 (r + s)) Ci = oder (1) −Θ0 (2s + r) Ci−1 + (1 + 2Θ0 (r + s)) Ci − Θ0 r Ci+1 - 152 - . bzw. K.3. Numerische Lösungsschemata Die Gl. (K.10) entsprechende Matrizenform ist endlich: h h = −Θ1 (2s + r) 1 + 2Θ1 (r + s) −Θ1 r i −Θ0 (2s + r) 1 + 2Θ0 (r + s) −Θ0 r i (1) (0) Ci−1 Ci Ci+1 Ci−1 Ci Ci+1 (K.11) die wie oben mit allen Abarten der Zeitwichtungs verwendet werden kann. Die Hoffnung, ein genaueres Verfahren zu erhalten, erfüllt sich wegen der geringen Fehlerordnung meistens nicht. In den Advektionstermen sind jedoch die Konzentrationen Ci+1 verschwunden. Würde das auch für die Dispersionsanteile gelingen, hätte man eine für den Punkt n passende Gleichung für den Abstromrand. K.3.3 Nichtreflektierende Randbedingung am Ausstromrand Für den letzten Gitterpunkt n existiert kein rechter Nachbar. Die Konzentrationen Cn+1 dürfen daher in den zugehörigen Gleichungen nicht enthalten sein. Die Konzentration C selbst oder ihren Gradienten in n vorzugeben, führt zu starken Oszillationen der Lösung. Am wenigsten stört die Annahme, daß hier die 2. Ableitung verschwindet. (∂ 2 C/∂x2 )n = 0 ≈ (Cn−1 + Cn+1 − 2Cn )/∆x2 führt sofort auf die Ersetzung für den störenden Wert in i + 1 Cn+1 ≈ 2Cn − Cn−1 , damit wird Gl. (K.10) zu: h −2Θ1 s 1 + 2Θ1 s i " Cn−1 Cn #(1) = h −2Θ0 s 1 + 2Θ0 s i " Cn−1 Cn #(0) , womit alle oben hergeleiteten Schemata hinsichtlich des Abstromrandes vervollständigt werden. Der Vergleich mit Gl. (K.11) zeigt, daß bis auf den hier fehlenden Wert r = D∆t/∆x2 beide Gleichungen identisch sind. Das bedeutet: über den rechten offenen Rand wird advektiver Transport berechnet – mit dem Upstream Schema! Diffusion oder Dispersion werden unterdrückt. Denn der Koeffizient D fehlt in der Gleichung ebenso wie – beabsichtigt – die Näherung für eine 2. Ableitung. K.3.4 Numerische Dispersion Die vorgestellten Differenzenverfahren sind mehr oder weniger mit einem Fehler behaftet, der als numerische Dispersion bezeichnet wird. Er fällt bei der Transportgleichung besonders auf. Hier wird er anhand des expliziten Upstream Schemas illustriert. Dieses berechnet den neuen Wert für den Gitterpunkt i zu (1) Ci (0) (0) = Cr Ci−1 + (1 − Cr) Ci bei D = 0 . - 153 - KAPITEL K - Transportgleichung Wie leicht zu sehen ist, ist die numerische Lösung sowohl für Cr = 0 als auch für Cr = 1 exakt. Praktisch kommen diese speziellen Werte wegen der unterschiedlichen Fließgeschwindigkeiten in der Natur nur äußerst selten vor. ∆x Gegeben sei ein Peak mit einer Breite von 4 Ortschritten, der mit einer Geschwindigkeit v = 2∆t nach rechts ohne Dispersion oder Diffusion transportiert werden soll, d.h. die Courantzahl ist 0,5. Die numerische Lösung zeigt das folgende Verhalten: Vom Ausgangszustand a) werden im ersten Zeitschritt die Werte in den vorangehenden Abschnittsmitten zu den Gitterpunkten (Knoten) transportiert. Das Ergebnis 1) entspricht der exakten Lösung soweit es die Knotenwerte betrifft. Zwischen den Knoten liegt dem Verfahren aber nur ein linearer Ansatz zugrunde. Deshalb sind die Spitze verschwunden und die Knicke nicht mehr korrekt dargestellt. Die Knotenwerte 2) werden aber aus der zwischen den Knoten interpolierten Konzentration berechnet. In den weiteren Zeitschritten vergrößert sich der Fehler immer mehr. Nach dem 6. Schritt ist gerade noch die Hälfte der maximalen Anfangskonzentration vorhanden! Das, obwohl das Schema von Zeitschritt zu Zeitschritt vollkommen korrekte Knotenwerte ergibt. K.3.4.1 Ursachen und Abhilfe Der Grund für diese sehr störende zusätzliche Dispersion ist, daß die gesamte Information über die Konzentrationsverteilung nur aus den n Knotenwerten besteht. Solche, die von einer linearen Verteilung abweichen, werden nach einem Transportweg v∆t 6= ∆x nicht durch einen Knotenwert dargestellt, sie fallen durch die Maschen des Rechengitters“. ” Die numerische Dispersion kann durch verschiedene geeignete numerische Filter teilweise beseitigt werden. Ein solcher wird hier kurz skizziert: Als zusätzliche Information können die Tracermassen zwischen den Gitterpunkten dienen, im Anfangszustand aus linearer Verteilung. In den einzelnen Zeitschritten werden zunächst die Knotenwerte berechnet. In einem Nachlauf ermittelt man dann die Massenflüsse über die Gitterelementgrenzen und damit die neuen Massen am Ende des Zeitschritts. Weiter bestimmt man die quadratische Verteilung, die sowohl die beiden Knotenwerte als auch die Masse im Element richtig wieder gibt. Im jeweils nächsten Zeitschritt wird dann diese zur Ermittlung der neuen Knotenwerte benutzt. Diese Methode ist ausbaufähig: Für einen kubischen Hilfsansatz wäre analog noch die Schwerpunktslage der Massen in den Elementen mitzuverfolgen. - 154 - Kapitel L Diskrete Simulation: Zellulare Automaten - 155 - KAPITEL L - Zellulare Automaten L.1 Was sind zellulare Automaten? Unter einem zellularen Automaten versteht man einen n-dimensionalen Raum, der in reguläre Zellen unterteilt ist. Jede Zelle wird durch einen oder mehrere Zustände charakterisiert. Die Zustände ändern sich synchron mit mit denen der anderen Zellen, basierend auf den Zuständen der benachbarten Zellen. Sie sind als schnelle Simulationsmethode beliebt u.a. in • Chemie • Biologie • Physik • Ökologie • Sozialwissenschaften • Verkehrssimulation Nachteil: Es gibt keine Maßstabsgesetze! ; Die simulierten Prozesse werden nur qualitativ – nie quantitativ! – beschrieben. L.1.1 Geschichte 1950 1968 ab 1980 John von Neumann (auf Vorschlag von Stanislaw Ulam) konstruiert einen sich selbst reproduzierenden Automaten auf einem einfachen Gitter. Ganz ohne Computer: John H. Conway entwickelt das Game of Life; wird hier noch näher behandelt. Theoretische Grundlagen der ZA u.a. von S. Wolfram, S. Fredkin und N. Packard. Zusammenhänge mit Chaostheorie und nichtlinearer Dynamik. - 156 - L.2. Allgemeines L.2 L.2.1 Allgemeines Formale Definition Reguläres Gitter∗ : L Die Elemente von L werden Zellen genannt. Nachbarschaftsrelationen: N ⊆ Ln Menge der Nachbarschaften† Endliche Zustandsmenge: Z Jede Zelle besitzt genau einen Zustand z aus Z Zustandsänderung‡ : F : Z n → z Der Zustand jeder Zelle entwickelt sich nach der gleichen Regel F aufgrund der Zustände der Nachbarzellen Zellularer Automat: (L, N , Z, F) L.2.2 Gittergeometrien Räumliche Diskretisierung durch Unterteilung des Raumes in gleichartige Teilbereiche ( Zellen“). Es ” kommen nur reguläre Unterteilungen (richtungsunabhängig) in Frage. ∗ im Prinzip von unendlicher Ausdehnung Definition nach v. Neumann oder Moore ‡ Regeln † - 157 - KAPITEL L - Zellulare Automaten L.2.3 Nachbarschaftsbeziehungen Jede Zelle eines ZA besitzt eine endliche Anzahl von Nachbarn. Definitionen im Zweidimensionalen: • von Neumann: Nachbarn haben gemeinsame Kanten • Moore: Nachbarn haben gemeinsame Kanten oder Ecken Allgemeinere Nachbarschaften durch Angabe von Abständen r a) 1-dimensional b) Quadratgitter L.2.4 L.2.4.1 c) 2-dim. r = 1 Zustände Zustandsmenge Jede Zelle eines ZA kann nur endlich viele Zustände annehmen. Diese werden durch Elemente eines Alphabets repräsentiert. Zustandsmenge: Z = { z; z ∈ A} eine Konfiguration C : L → Z ordnet jeder Zelle einen bestimmten Zustand zu. Zu Beginn einer Simulation wird eine Anfangs- oder Startkonfiguration definiert. L.2.4.2 Zustandsübergangsfunktion (Regeln) Die Zustandsänderung jeder Zelle eines ZA hängt nur vom Zustand der Zelle selbst und denen ihrer Nachbarn ab. Die Regeln können als Funktionstabelle, Formel oder verbal definiert sein. Die allgemein deterministischen Regeln können durch stochastische ergänzt werden. L.2.5 Ränder Die unendlich fortgesetzten Gitter der formalen Definition lassen sich nicht auf Computern umsetzen. Daher werden die Gitter abgeschnitten und es müssen für die Ränder möglichst wenig störende Randbedingungen vorgegeben werden. - 158 - L.3. Das Lebensspiel a) Je nach Lage zum Rand haben die Zellen unterschiedliche Anzahlen von Nachbarn (eine andere lokale Umgebung). L.3 L.3.1 Das Lebensspiel Definitionen Gitter: 2-dimensional, m × n Quadrate Ränder: periodisch Zustände: lebend oder tot Nachbarn: nach Moore, r = 1 Regeln: Lebensraum L.3.2 b) Beseitigung der Ränder durch Vorgabe von vernünftigen Randbedingungen. Beobachtungen • Transiente und stabile Konfigurationen - 159 - 1. ; Drei lebende Nachbarn Zelle wird geboren bzw. bleibt am Leben. 2. ; Zelle lebt, zwei lebende Nachbarn Zelle bleibt am Leben. 3. ; sonst Zelle stirbt (Vereinsamumg / Überbevölkerung) KAPITEL L - Zellulare Automaten (Die Anzahl der lebenden Nachbarn in den Zellen eingetragen) • Es kommt zu beweglichen Mustern • Bewegliche Muster führen zu Änderungen und Zerfall stabiler und transienter Muster. L.4 Stausimulation Dieser Abschnitt wird in Vorlesung und Übung näher erläutert. - 160 - Kapitel M Handwerkszeug III: Hilfsmittel für Finite Elemente Dieses Kapitel wird in der aktuellen Lehrveranstaltung nicht behandelt. - 161 - KAPITEL M - FEM - Hilfsmittel M.1 Natürliche Koordinaten für Dreiecke C T T T T T M.1.1 Die natürlichen Koordinaten geben das Flächenverhältnis der Teildreiecksflächen zur Gesamtfläche an und beschreiben damit die Lage des gemeinsamen Punkts P = P (x, y): T ΘB ΘA T P Q T Q Q ΘC Q T ` ` T ``` ``` QQT A ```Q T ` Q B z 6 Definition Θi = Ai /A∆ - x Die Flächen berechnen sich am einfachsten aus dem Kreuzprodukt ~ × AC| ~ 2A∆ = 2Ae(ABC) = A(ABDC) = |AB (Doppelte Gesamtfläche) = (xB − xA )(zC − zA ) − (zB − zA )(xC − xA ) (M.1) Teilfläche AA (die dem Knoten A gegenüberliegende Teilfläche P BC) für beliebige Koordinaten x, y mit gleicher Formel wie Gl. (M.1) jedoch anstelle (xA , zA ) → (x, z): 2AA = 2A(P BC) = (xB − x)(zC − z) − (zB − z)(xC − x) Allgemein, mit i = A, B, C, zyklisch: 2Ai = (xi+1 − x)(zi+2 − z) − (zi+1 − z)(xi+2 − x) (M.2) Definition der Flächenkoordinaten Θi : Θi = Ai A∆ (M.3) Eigenschaften: → ΘA + ΘB + ΘC = 1 = const. → 1 × differenzierbar → Θi = 1 für P = i → Θi = 0 auf Kante i + 1 → i + 2 → alle Θi sind linear auf den Kanten → e (M.4) Θi = fΘi bei benachbarten Elementen e, f auf gemeinsamer Kante Die Lagrangeschen Interpolationsbedingungen werden also durch einen Ansatz direkt in Flächenkoordinaten erfüllt. - 162 - M.1. GAUSS-GREENSCHER INTEGRALSATZ M.1.2 " Ableitung der Flächenkoordinaten ∂Θi ∂x = zi+1 − zi+2 2A∆ ∂Θi ∂z = xi+2 − xi+1 2A∆ " zA − zB xB − xA # = 1 2A∆ | 1 [H ] ( Gradientenmatrix“) ” 2A∆ } ΘA /∂x ΘB /∂x ΘC /∂x ΘA /∂z ΘB /∂z ΘC /∂z # vgl. (M.2) zB − zC zC − zA xC − xB xA − xC {z = (M.5) wobei die doppelte Dreiecksfläche in H zu finden ist: 2A∆ = h11 h22 − h12 h21 . Weitere Formeln (die i.a. nützlich sind, hier aber nicht benötigt werden) siehe Teil M.5 M.2 Partielle Integration, Gauß-Greenscher Satz Sind auf einem Gebiet A mit dem Rand S die mindestens einmal stetig differenzierbaren Funktionen u(x, z), w(x, z) ū(x, z) und w̄(x, z) gegeben, lautet die Regel für die Differentiation eines Produkts ⇔ d(uw) = udw + wdu wdu = d(uw) − udw . Die Integration über A ergibt: ZZ I = w ∂u ∂ ū + w̄ ∂x ∂z dzdx (M.6) A Z z2 = z1 | [uw]xx21 dz − {z } I1 ZZ A ∂w u dx dz + ∂x Z xB xA | [ūw̄]zzB A {z I2 dx − } ZZ ū ∂ w̄ dz dx ∂z A Die Integrale I1 und I2 sind in Ringintegrale über den Rand S des Gebiets A überführbar: - 163 - KAPITEL M - FEM - Hilfsmittel z2 Z u(x2 ) w(x2 ) dz I1 = z1 | {z rechter Rand von unten nach oben Z z1 } u(x1 ) w(x1 ) dz + z2 | {z linker Rand von oben nach unten } I = uw dz S xB Z I2 = ū(zB ) w̄(zB ) dx xA {z | } oberer Rand von links nach rechts xA Z + ū(zA ) w̄(zA ) dx xB | − = {z unterer Rand von rechts nach links } I ūw̄ dx S Mit dem nach außen weisenden Einheitsnormalenvektor n= [nx , nz ] wird das Randdifferential ausgedrückt zu: ds = − dx dz =+ nz nx (M.7) somit I I ūw̄ nz ds uw nx ds und I2 = I1 = S S Einsetzen in (M.6) ergibt zusammenfassend ZZ ∂u ∂ ū w + w̄ ∂x ∂z I (uw nx + ūw̄ nz ) ds − dA = S A ZZ ∂w ∂ w̄ u + ū ∂x ∂z dA (M.8) A Anmerkungen: Die Ringintegrale können elementweise gebildet und aufsummiert werden, da an benachbarten Elementen wegen der Gegenläufigkeit sich die gleichen Werte mit anderem Vorzeichen ergeben. Eine häufige Anwendung auf ein Vektorfeld v= [vx (x, z) vz (x, z)] und eine skalare Funktion w = w̄ = w(x, z) ist beispielsweise ZZ w A ∂vx ∂vz + ∂x ∂z I dA = w (vx nx + vz nz ) ds − S ZZ vx A - 164 - ∂w ∂w + vz ∂x ∂z dA (M.9) M.3. Numerische Integration M.3 Numerische Integration In vielen Fällen läßt sich das Integral Z 1 P (x) dx (P (x): beliebige Funktion von x) −1 nicht geschlossen berechnen. Es kann ersetzt werden durch Z 1 P (x) dx ≈ −1 n X Fi P (xi ). i=1 Nach Gauss können nun die Wichtungsfaktoren Fi und Stützstellen xi so gewählt werden, daß ein Polynom der Ordnung 2n − 1 exakt integriert werden kann. Das ist erheblich genauer als nach der Trapezregel (eine andere Form der num. Integration) — erfordert andererseits aber auch mehr Aufwand, wie wir gleich sehen. Beispielsweise integriert n = 1; x1 = 0.000; F1 = 2.000 alle linearen Polynome P (x) = ax + b exakt. M.3.1 Algebraische Darstellung für n = 2, 3 Bei der Programmierung ist es wünschenswert, Stützstellen und Gewichte nicht nur zahlenmäßig sondern als algebraische Ausdrücke zu kennen. n = 2 : exakt integrierbar: x3 , x2 , x, 1; Vorfaktoren spielen keine Rolle. P R 1 x x2 x3 x x2 /2 x3 /3 x4 /4 P dx R1 −1 P dx num. Integration 2 = F1 + F2 0 = F1 x1 + F2 x2 2 2 2 3 = F1 x1 + F2 x2 3 0 = F1 x1 + F2 x32 a) *) b) *) *) erfüllt, wenn F1 = F2 und x1 = −x2 , ; a) F1 = F2 = 1.000 p und b) x1,2 = ∓ 1/3 = ∓0.57735 Bei höherem n sind generell die Stützstellen xi und Wichtungen Fi symmetrisch. - 165 - KAPITEL M - FEM - Hilfsmittel Gauß-Integration mit 3 Stützstellen: n = 3 P R 1 x x2 x3 x4 x5 x x2 /2 x3 /3 x4 /4 x5 /5 x6 /6 P dx R1 −1 P dx num. Integration 2 = F1 + F2 + F3 0 = F1 x1 + F2 x2 + F3 x3 2 2 2 2 3 = F1 x1 + F2 x2 + F3 x3 3 3 0 = F1 x1 + F2 x2 + F3 x33 2 4 4 4 5 = F1 x1 + F2 x2 + F3 x3 0 = F1 x51 + F2 x52 + F3 x53 a) *) b) *) c) *) *) erfüllt bei Symmetrie von Stützstellen und Fi , (x2 = 0.0) b) 2/3 = 2F1 x21 c) 2/5 = 2F1 x41 ; ) ; 5x41 = 3x21 und F1 = x2 = 0.00000 p x1,3 = ∓ 3/5 = ∓0.77497 1 3x21 mit F2 = 8/9 = 0.88888 F1 = F3 = 5/9 = 0.55555 Stützstellen xi und Gewichte Fi (numerisch) für größere n siehe M.5 M.4 Allgemeines bilineares Viereckselement M.4.1 Einheitsviereck ⇔ Das Originalelement M.4.2 wird abgebildet auf das Einheitselement Formfunktionen im Einheitsviereck Die vier Formfunktionen Nj : NA = (1 + r)(1 + s)/4 , NB = (1 − r)(1 + s)/4, = (1 − r)(1 − s)/4 , ND = (1 + r)(1 − s)/4 NC - 166 - (M.10) M.4. Allgemeines bilineares Viereckselement erfüllen die Lagrangeschen Interpolationsbedingungen aufgrund ihrer Eigenschaften: - in r und s 1× differenzierbar - NA + NB + NC + ND = 1 =const. - Ni = 1 in Ecke i - Ni = 0 in Ecke j, j 6= i - entlang Kante i − j linear und Nk = 0 für k 6= i, k 6= j bilinearer Ansatz einer Zustandsgröße f : 1 f= 4 # fA fB (1 + r)(1 + s) (1 − r)(1 + s) (1 − r)(1 − s) (1 + r)(1 − s) | {z } | {z } | {z } | {z } f C 4NA 4NB 4NC 4ND " fD M.4.3 (M.11) Differentialbeziehungen M.4.3.1 Jakobi-Matrix Mit dem Ansatz (M.11) lassen sich auch die Koordinaten x, z interpolieren: h x z i = h NA NB NC ND i xA zA xB zB xC zC xD zD und durch partielle Differentiation nach r bzw. s folgt: " ∂x ∂r ∂x ∂s ∂z ∂r ∂z ∂s # 1 = 4 " # xA xB (1 + s) −(1 + s) −(1 − s) (1 − s) (1 + r) (1 − r) −(1 − r) −(1 + r) xC xD {z | Jakobi-Matrix: J zA zB zC zD (M.12) } Kettenregel: " ∂x ∂r ∂x ∂s ∂z ∂r ∂z ∂s #" ∂ ∂x ∂ ∂z # " ∂ ∂r ∂ ∂s " =J ∂ ∂x ∂ ∂z # " = ∂ ∂r ∂ ∂s # (M.13) bzw. " ∂ ∂x ∂ ∂z # =J −1 # (M.14) Da J und somit auch J −1 r und s enthalten, ist die Jakobi-Matrix nur für den speziellen Punkt (r, s) gültig, nicht für das gesamte Viereck! - 167 - KAPITEL M - FEM - Hilfsmittel M.4.3.2 Das Flächenelement dA = dx dz Das Flächenelement dA = dx dz Im r-s-System stehen die Linien x = const. und z = const. nicht unbedingt senkrecht aufeinander, sie sind i.a. auch keine Geraden (sondern Hyperbeln)! Totale Differentiale: dx = ∂x ∂x dr + ds ∂r ∂s dz = ∂z ∂z dr + ds ∂r ∂s Das Flächenelement dA bezüglich der r-s Koordinatenbasis ergibt sich dann aus dem Vektorprodukt ~ × dz ~ dx det er ∂x ∂r dr ∂z ∂r dr es et ∂x ∂z ∂x ∂z ∂x et = dA et − 0 = dr ds ∂s ds ∂r ∂s ∂s ∂r ∂z {z } | 0 ∂s ds das ist det J ! vgl.(M.13) mit der Orthonormalbasis er , es , et dA = det J dr ds M.5 (M.15) Literatur O.C. Zienkiewicz: Methode der finiten Elemente; Hanser Verlag, München/Wien. Ein immer wieder aufgelegter Klassiker! Es ist nahezu alles zu finden, was mit der Methode in Verbindung steht. Für Einsteiger und Experten – leicht verständlich. - 168 - Kapitel N Stationäre Grundwasserströmung Dieses Kapitel wird in der aktuellen Lehrveranstaltung nicht behandelt. - 169 - KAPITEL N - Stationäre Grundwasserströmung N.1 Theorie der Grundwasserströmung Es wird hier nur der stationäre Fall in einem ebenen Vertikalschnitt betrachtet. Dreidimensionale Probleme können analog behandelt werden. N.1.1 Grundlagen Die Geschwindigkeitsvektoren sind tangential zu den Stromlinien. Diese bilden mit den Äquipotentiallinien bei isotroper Durchlässigkeit ein orthogonales Netz. Undurchlässige Berandungen sind immer auch Stromlinien; durchlässige Ränder an freiem Wasser sind Äquipotentiallinien. Definition der Standrohrspiegelhöhe: z h=z+ 6 p ρg (N.1) Druck: -x p = ρg(h − z) (N.2) Vertikalschnitt durch Grundwasserproblem Das Darcy-sche Gesetz enthält keine Trägheitsterme: v = −K grad h " ⇔ vx vz # " = − kxx kxz kzx kzz # " ∂h ∂x ∂h ∂z # (N.3) Kontinuitätsgleichung für inkompressible, quell- und senkenfreie Strömung: div v = N.1.1.1 ∂vx ∂vz + =0 ∂x ∂z (N.4) Durchlässigkeit bei isotropem Boden kxz = kzx = 0; Werte für k: kxx = kzz = k Feinsand: Flußsand 1-3 mm: Flußsand 1-8 mm: feiner Kies 20-40 mm: Mittelkies 40-70 mm: Lehm: Ton: 0.0001 bis 0.002 m/s 0.0025 m/s 0.0088 m/s 0.03 m/s 0.035 m/s (0.1 bis 1.0) ·10−6 m/s (0.02 bis 20) ·10−9 m/s - 170 - N.1. Theorie der Grundwasserströmung N.1.1.2 Durchlässigkeitstensor im anisotropen Fall Hauptrichtungen 1 und 2: k11 > k22 , k12 = k21 = 0 Entkoppelte Gleichungen: v1 = k11 · ∂h , ∂1 v2 = k22 · ∂h ; ∂2 Durchfluß in anisotropem Boden " vx vz # " = " = cos α − sin α sin α cos α # " cos α − sin α sin α cos α # " | · · K v1 v2 # " = k11 0 0 k22 cos α − sin α sin α cos α # " · # " · cos α sin α − sin α cos α {z k11 0 0 k22 # " · ∂h ∂x ∂h ∂z # " · ∂h ∂1 ∂h ∂2 # # (N.5) } in x, z Koordinaten K ist ein symmetrischer Tensor. N.1.2 DGl für Standrohrspiegelhöhen h Gl. (N.3) in (N.4) eingesetzt ergibt: ∂h ∂h ∂ ∂h ∂h ∂ Kxx + Kxz + Kzx + Kzz =0 ∂x ∂x ∂z ∂z ∂x ∂z (N.6) für isotropes (Kxz = Kzx = 0, Kxx = Kzz = K) und homogenes (K(x, z) = k = const.) Material vereinfacht sich Gl. (N.6) zu ∂2h ∂2h + 2 =0 ∂x2 ∂z (Laplace-Gleichung) - 171 - KAPITEL N - Stationäre Grundwasserströmung N.2 Finite Element Methode Aufteilung des Lösungsgebiets in Elemente e = 1(1)M Einfache Ansätze innerhalb der einzelnen Elemente Ansätze haben Stützstellen in den Knoten i = 1(1)N Gesucht: h = {h1 , h2 , . . . , hN }; hi = h(xi , zi ) N.2.1 Einfaches lineares Dreieckselement Koordinaten und Bezeichnungen zu Finitem Dreieckselement Interpolation (linear) über ein Element: (Näherungsansatz) ; h(x, z) = a0 + a1 x + a2 z ∂h ∂h = a1 und = a2 ∂x ∂z a0 1 xA zA hA · = 1 x z h B B B a1 a2 1 xC zC hC e e h = ; ea = B · (N.7) e a B −1 · eh e (N.8) e h(x, z) = [ 1 x z ] ea = [ 1 x z ] eB −1 eh (N.9) wobei eh ein Teilbereich aus h = {h1 , . . . , hN } ist. Die Näherungsansätze eh aller Elemente (N.7, N.9) sind • elementweise linear, • stetig an den Elementkanten (d.h. beim Übergang auf ein benachbartes Element sind keine Sprünge vorhanden), • einmal (stückweise) differenzierbar. ; grad h ist: • elementweise konstant (dann auch vx , vz !), • unstetig an den Elementkanten, • nicht differenzierbar. - 172 - N.2. Finite Element Methode " ∂h/∂x = ∂h/∂z = e 0 1 0 0 0 1 | # B −1 · eh = grad h e {z } G= Gradientenmatrix (2 × 3) e" e v= vx vz # = − eK eG eh (N.10) Innerhalb des Elements ist nun erfüllt: • Darcy-sches Gesetz • Kontinuitätsbedingung (sowohl ∂ evx ∂x = 0 als auch ∂ evz ∂z = 0 !) Berechnung der Gradientenmatrix eG und der doppelten Dreiecksfläche 2A∆ 2ABC = 2(ADEC + CEF B − ADF B) 2A∆ = (zA + zC )(xC − xA ) = + (zC + zB )(xB − xC ) − (zA + zB )(xB − xA ) xB zC − xC zB + xC zA − xA zC + xA zB − xB zA = | {z DBC } | {z DCA } | {z DAB det eB ! = 2A∆ = (zC − zA )(xB − xA ) − (xC − xA )(zB − zA ) (N.11) ~ × AC; ~ man benutze für 2A∆ stets diese Formel, weil damit das Problem (auch aus Vektorprodukt AB kleine Differenzen großer Zahlen“ entschärft wird!) ” Inverse von eB: 1 0 0 (Einsetzen der Vektoren 0 , 1 und 0 als Rechte Seite) 0 0 1 B −1 e DBC DCA 1 = zB − zC z C − zA 2A∆ | {z } xC − xB xA − xC e det B DAB zA − zB xB − xA - 173 - } KAPITEL N - Stationäre Grundwasserströmung Gradientenmatrix in expliziter Form: " e G= N.2.2 0 1 0 0 0 1 # e B −1 1 = 2A∆ " zB − zC zC − zA xC − xB xA − xC z A − zB xB − xA # (N.12) Kontinuitätsbedingung im Finite-Element-Netz Kontinuitätsbedingung an den Innenknoten Der Durchfluß, der in einen Knoten i hineingeht, muß sich in den anhängenden Elementen wiederfinden! Ei = X e Qi (Einspeisung) e e Z Qi = e vn ds −−− Innenknoten (ohne Quelle/Senke) und Knoten an undurchlässigem Rand: Ei = 0 Kontinuitätsbedingung am freien Wasser eQ (wie oben) Ei = i Senke: Ei < 0 (Brunnen) Quelle: Ei > 0 (Schluckbrunnen) P Alle Durchflüsse durch die Kanten werden ohne Lücken oder Überlappungen dann erfaßt, wenn die Schnitte um die Knoten durch die Seitenmitten der Elemente gehen. Berechnung von Qi (Strahlensatz) e eQ A eQ B eQ C e # e" zC − zB xB − xC 1 vx = zA − zC xC − xA · 2 vz zB − zA xA − xB - 174 - (N.13) N.2. Finite Element Methode Der Vergleich mit Gl. (N.12) zeigt: e QA e Q = QB = −A∆ eGT ev QC und nach Einsetzen von Gl. (N.10) erhält man die Elementgleichung eQ = A∆ eGT eK eG eh | {z D e (N.14) } mit der symmetrischen Durchflußmatrix eD des Elements e. zu Gl. (N.13): Die Kontinuitätsgleichung ist elementweise erfüllt: eQA + eQB + eQC = 0; da {(zC − zB ) + (zA − zC ) + (zB − zA )} evx = 0 und {(xB − xC ) + (xC − xA ) + (xA − xB )} evz = 0 Gesamtsystem: Lineares Gleichungssystem für h D·h=E Die globale (n × n) Koeffizientenmatrix D wird gebildet durch Einspeichern der Elemente aller eD, nach Knoten sortiert. Sie ist 1-fach singulär, daher ist mindestens eine h-Randbedingung vorzugeben. Einspeisungen können vorgeschrieben werden an allen Knoten, die keine h-Randbedingungen erhalten. Sie werden in die Rechte Seite des Gleichungssystems eingespeichert. Randbedingungen: Innenknoten: Ei oder hi vorgegeben. in der Regel Ei = 0 (Kontinuität!) Nach Auflösen des Systems nach h werden die Geschwindigkeiten ev elementweise nach Gl. (N.10) ermittelt. Durch Ausmultiplizieren des Gleichungssystems erhält man auch die noch unbekannten Zuflüsse Ei an Knoten mit vorgegebener Standrohrspiegelhöhe. Die Gleichungssysteme können bei der Berechnung naturnaher Systeme sehr groß werden, wobei sie aber dünn besetzt sind. Angezeigt ist daher die Verwendung eines schnellen iterativen Lösers, mindestens jedoch des Skylineverfahrens bei mittelgroßen Systemen. - 175 - KAPITEL N - Stationäre Grundwasserströmung N.3 Verallgemeinerung des FE-Verfahrens Nachfolgend wird die Elementmatrix für ein lineares Grundwasserelement auf einem anderen Wege hergeleitet. Es ergeben sich exakt die gleichen Ausdrücke. Der Vorteil der neuen Methode ist, daß sich mit ihr auch ganz andere Elementtypen leicht erzeugen lassen. Differentialgleichungen, wir benutzen jetzt → Tensorschreibweise " v = −K ∂ ∂x ∂ ∂z # h (Darcy) vα = −Kαβ h,β → α = x, z; mit (N.15) β = x, z Bei Produkten mit gleichen Indizes wird summiert, ausgeschrieben also: vx = −(Kxx h,x +Kxz h,z ), vz = −(Kzx h,x +Kzz h,z ) div v =0 (Kontigleichung) vα ,γ δαγ → = 0 α = x, z; mit (N.16) γ = x, z Definition: ( δαγ d.h. = 1 für α = γ 0 für α 6= γ v,xx ·1 + v,xz ·0 + v,zx ·0 + v,zz ·1 = 0 −(Kαβ h,β ),γ δαγ = 0 (N.17) Dies ist die Dgl. des Problems (N.6) in der neuen Schreibweise. N.3.1 Linearer Ansatz in Flächenkoordinaten: für Element ABC, vgl. Gl. (M.2). e h̃ = eΘi ehi ; i = A, B, C (N.18) Die Näherung eh̃ gibt die Knotenwerte ehi exakt wieder, jedoch wird die Dgl. (N.17) i.a. nicht erfüllt. −( eKαβ eh̃,β ),γ δαγ = eε 6= 0 (N.19) - 176 - N.3. Verallgemeinerung des FE-Verfahrens N.3.2 Residuenminimierung Wenn die DGl bestmöglich erfüllt werden soll, muß der Approximationsfehler ε insgesamt minimiert werden. Dieses Residuum ist die Summe aller Elementfehler eε. Also genügt es, seine Anteile in den einzelnen Elementen e (hier: Dreiecke) zu minimieren. Übliche Verfahren sind: • Kollokation (punkt- oder gebietsweise) • Fehlerquadratmethode • Galerkinsches Verfahren (wird im Folgenden benutzt) N.3.2.1 Kollokation Punktweise Kollokation Die Forderung eεj = 0 an drei Punkten j innerhalb des Elements liefert mit Gl. (N.18) und (N.19) drei Bestimmungsgleichungen für die drei Unbekannten hj . Teilgebietskollokation ZZ ! e εj dA = 0 Aj für drei Gebiete Aj des Elements verschwindet das mittlere Residuum. N.3.2.2 Fehlerquadratmethode ZZ e 2 ! ε dA = Min A∆ führt zu den drei Gleichungen ∂ eε2 dA RR A∆ ∂hA ∂ ⇔ ∂ = eε2 dA RR A∆ ∂hB ∂ = eε2 dA RR A∆ ∂hC eε2 dA RR A∆ ∂hi ! =0 - 177 - ! =0 KAPITEL N - Stationäre Grundwasserströmung N.3.2.3 Galerkin-Verfahren ZZ ! e Wj eε dA = 0; j = A, B, C A∆ Hier soll der mit den Gewichten eWj gemittelte Fehler Fehler eε verschwinden. Das Standard-Verfahren nach Galerkin benutzt als Wichtungen die Ansatzfunktionen eWj = eΘj . N.3.3 Durchführung des Verfahrens von Galerkin ZZ e 0= ZZ e A∆ Wj e Kαβ eh̃,β ,γ δαγ dA e Kα,β eh̃,β ,α dA = 0 | A∆ 1 für α = γ folgt 0 für α = 6 γ wegen δαγ = e Wj A∆ ( ZZ e Wj ε dA = {z − eṽ (N.20) } α Partielle Integration in α-Richtung mit dem Integralsatz (M.9) von Gauss und Greene − I e Wj e(ṽα nα ) ds = S | {z eJ 1j } ZZ e Wj ,α eKαβ eh̃,β dA (N.21) A∆ | {z eJ } 2j wandelt die zweiten Ableitungen des Ansatzes eh̃,βα in erste der Wichtungsfunktionen um. DGln 2. Ordnung können so auch mit linearen Ansätzen approximiert werden! — eine für Finite Elemente typische Vorgehensweise. N.3.3.1 Bedeutung des Ringintegrals eJ1j (ohne Elementindex e , beachte (M.7)) ṽα nα ds = ṽx nx ds + ṽz nz ds = vx dz − vz dx = |~vn | Das ist die Filtergeschwindigkeit über den Rand nach außen. - 178 - N.3. Verallgemeinerung des FE-Verfahrens Die drei Integrale J1j summiert stellen den gesamten Zufluß in das Element dar ( P Θj = 1). Mit der Definition Qj = J1j wird der über die an den Knoten j anliegenden Kanten gehende Fluß durch konzentrierte Zuflüsse in die Knoten j ersetzt. Dabei wird der Gesamtfluß entsprechend den Wichtungen Θj auf die Knoten aufgeteilt – hier jeweils die Hälfte von den zwei anliegenden Kanten. ; Qj = J1j = J2j ZZ e Qj = J2j = e Wj ,α eKαβ eh̃,β dA (N.22) A∆ | {z Durchflußmatrix e } D Hier heben sich Flüsse über die gemeinsame Kante eQ jj | f ÷ j + 1 und Qj j + 1 ÷ j {z Kante } | {z Kante } gegenseitig auf. Am Gebietsrand gilt: e Q(j)j+2÷j +fQ(j)j÷j+1 = Ej (j +2÷j und j ÷j +1 sind aufeinander folgende Kanten des Randes) N.3.3.2 Elementmatrix detailliert Mit Wj = Θj und Ansatz (N.19) ergibt sich (Elementindex e weggelassen): ZZ Qj Θj ,α Kαβ (Θi = | {z } A∆ h i |{z} ),β dA konstant konstant ZZ = dA Kαβ hi Θj ,α Θi ,β {z | } A∆ konstant, s. (M.5) ZZ = Θj ,α Θi ,β dA Kαβ hi A∆ Qj = A∆ Θj ,α Kαβ Θi ,β hi | {z Dji } - 179 - KAPITEL N - Stationäre Grundwasserströmung in Matrizenform: Q = A∆ GT K G h mit QA Q = QB , QC " K= Kxx Kxz Kzx Kzz # , hA h = hB hC und 1 G= 2A∆ " z B − z C zC − z A xC − xB xA − xC z A − zB xB − xC # Hier liefert das Galerkin-Verfahren dieselben Matrizen wie der im Abschnitt N.2.1 beschriebene Weg! Begründung: a.) Ansatz in Flächenkoordinaten ist äquivalent zu linearem Ansatz in x und z. b.) Unterschiede in der Zuordnung Qj = f (vn ) machen sich nicht bemerkbar, weil im Element v = const. ist. ; vn = const. an den Kanten. N.4 Ein einfaches Viereckselement Aus 4 Teildreiecken läßt sich leicht ein allgemeines Viereckselement konstruieren – nicht so gut ist wegen Bevorzugung einer Diagonalen der Zusammenbau aus nur 2 Dreiecken. Im globalen System beschrieben werden dabei nur die Eckknoten A, B, C, D. Der Mittelknoten M ist ausschließlich auf der Elementebene vorhanden! Die Koordinaten von M werden gemittelt zu: 1 xM = (xA + xB + xC + xD ) 4 1 zM = (zA + zB + zC + zD ) 4 - 180 - N.4. Ein einfaches Viereckselement Mit den Methoden der Abschnitte N.2.1 oder N.3.3 werden die vier Durchflußmatrizen ID, IID, IIID, und IVD der Teildreiecke berechnet und in eine 5 × 5-Matrix des Elements wie folgt eingespeichert: I+IV d Id Id AA I+IId BA IId 0 IVd IIId I+IId MA MB IIId CC MC | I+IId III+IVd AM BM II+IIId CD CM DD III+IVd MD I+II+III+IVd III+IVd DC II+IIId I+IVd AD 0 BC II+IIId 0 DA I+IVd IId BB CB IVd 0 AB DM MM {z } e D eD ist die Durchflußmatrix des Gesamtelements mit Mittelknoten. e D hA hB hC hD hM = QA QB QC QD QM (N.23) Da der Mittelknoten M nur elementintern definiert ist, muß QM = EM = 0 gelten! QM = ed51 hA + ed52 hB + ed53 hC + ed54 hD + ed55 hM = 0 ; hM 1 h e =− e d51 d55 ed 52 ed 53 ed 54 i hA hB hC hD (N.24) Nach Berechnung der Eckwerte hA , hB , hC , hD am globalen System wird diese Gleichung wieder benutzt, um für die Berechnung der Geschwindigkeiten der Teildreiecke hM zu ermitteln. (Die 4 Geschwindigkeitsvektoren können anschließend zu ev M gemittelt werden.) Setzt man Gl. (N.24) in (N.23) ein, so erhält man eine 4×4 Elementmatrix eD für das Viereck ABCD , die den Innenknoten M nicht mehr enthält: D= e ed 11 ed 12 ed 13 ed 14 ed 21 ed 22 ed 23 ed 24 31 ed 32 ed 33 ed 41 ed 42 ed 43 ed ed ed 34 − 1 ed 55 44 (1. bis 4. Zeile/Spalte von eD ) ed 15 ed 25 ed 35 ed 45 h ed 51 ed 52 ed 53 ed i 54 (Spatprodukt!) (Anteile von hM sind nun durch hA , hB , hC und hD ersetzt; diese Vorgehensweise wird Statische Kondensation genannt.) - 181 - KAPITEL N - Stationäre Grundwasserströmung N.5 Bilineares Viereckselement Mit einem bilinearen Ansatz und der Galerkinschen Methode (N.3.2.3) läßt sich ein allgemeines Viereckselement leicht herleiten. Ausgehend von der Differentialgleichung (N.6): ; −( eKαβ h,β ),γ δαγ = 0 −( eKαβ h,β ),α = 0 mit Ansatz (M.10) eh̃ = Ni ehi −( eKαβ eh̃,β ),α = ε 6= 0 Fehlerminimierung nach Galerkin, mit den Formfunktionen Nj als Wichtung Wj : ZZ Nj 0= e Kαβ eh̃,β ,α dA | A2 {z e (die Nj sind elementunabhängig) } − ṽα partielle Integration mit Gl. (M.8) − I ZZ e e Nj vα nα ds S {z | A2 } e Nj ,α eKαβ eh̃,β dA = vgl. (N.22) Qj ZZ e Nj ,α eKαβ (Ni ehi ),β dA ; Qj = (α, β sind noch x und z!) A2 Mit Hilfe der inversen Jakobi-Matrix J −1 und ihrer Determinante (vgl. Abschnitt M.4.3.1) werden die Ableitungen der Formfunktionen und die Integration im r-s-System durchführbar. Z e Qj = 1 Z 1 Nj ,γ −1 −1 e −1 Jαγ | {z } nach r und s | {z e Kαβ e −1 Jβδ | {z } nach r und s x-z Kompon. | } e {zdr ds} |det J N, i δ |{z} {z hi dA } nach x und z abgeleitet nach x und z abgeleitet {z | e } e Dji Nach numerischer Integration, Abschnitt M.3 in beiden Richtungen erhält man die symmetrische Elementmatrix eD: e Dji = n X n X Fk Fl eklNj ,γ −1 ekl ekl −1 e Jαγ Kαβ eklJβδ Ni ,δ det eklJ k=1 l=1 Hierbei ist J an allen Gaußpunkten rl , sk zu berechnen, ebenso die Ableitungen der Formfunktionen. Indizierung beachten: In Matrizenform ergeben sich teilweise Produkte mit Transponierten. - 182 - N.6. Beispiele Erforderliche Anzahl Gauß-Punkte: n ist so groß zu wählen, daß der Integrand — r und s in J −1 auch im Nenner! — mit für den praktischen Zweck ausreichender Genauigkeit integriert werden kann (wenn die Elemente nicht zu schiefwinklig sind, genügt i.a. n = 3 — probieren!). Mindestens erforderlich ist dabei, daß die Flächen der Elemente exakt integriert werden (Zienkiewicz). Nachlauf: Berechnung der Filtergeschwindigkeiten im Schwerpunkt O (r = 0, s = 0) bei bekannten e(h) : i eO vα = − e(K)αβ | {z x-z- Komponenten } eO −1 eO Jβδ N, | {zi δ} e hi nach r, s | {z } nach x, z abgeleitet N.6 Beispiele N.6.1 Erste Tests Alle in diesem Kapitel entwickelten Elemente nähern die Standrohrspiegelhöhen linear an. Einfachste Rechenbeispiele sind solche mit K = const. und grad h = const. In diesen Fällen muß die numerische Lösung immer mit der analytischen exakt übereinstimmen — unabhängig von der Feinheit des Netzes und dem verwendeten Element. Der Grund liegt darin, daß das Galerkin-Verfahren den Fehler minimiert; und dieses Minimum muß immer dann Null sein, wenn der Finite-Elemente-Ansatz die exakte Lösung des Problems darstellen kann. N.6.2 Eckströmung Die Äquipotentiallinien sind hier gekrümmt; die FEM-Lösungen können nur Näherungen sein. Die Strömung wurde mit nur wenigen Elementen diskretisiert, um die Unterschiede zwischen den verschiedenen Elementtypen aufzuzeigen. Dargestellt sind Ergebnisse des Programms GruWa2. - 183 - KAPITEL N - Stationäre Grundwasserströmung a) 6 Dreieckselemente b) 3 Vierecke aus Teildreiecken (stat. Kondensation) c) 3 bilineare Viereckselemente d) 12 bilineare Viereckselemente N.6.3 Umströmung einer Spundwand 560 Knoten und 504 bilineare Viereckselemente (Boden im rechten Teil anisotrop und weniger durchlässig) - 184 - Kapitel O Interpolation von Funktionswerten - 185 - KAPITEL O - Interpolation O.1 Problemstellung Es seien gegeben n Wertepaare [xi , yi ]. Gesucht wird eine einfache, möglichst auch differenzierbare Funktion, die die gegebenen Funktionswerte yi an den Stellen xi optimal approximiert und dazwischen glatt verläuft. Eine häufig benutzte Methode ist, einen Polynomansatz m-ten Grades zu wählen: 2 3 m P = c0 + c1 x + c2 x + c3 x . . . + cm x = m X ck xk mit j < n . (O.1) k=0 Die Optimalität wird durch das kleinste Fehlerquadrat hergestellt. O.2 Bestimmung der Koeffizienten ck Setzt man die Werte xi in P ein und vergleicht das Ergebnis mit den gegebenen yi , schreibt sich die Fehlerquadratsumme als FQ = n X (Pi − yi )2 i=1 = n X m X i=1 k=0 !2 ck xki − yi . (O.2) Ein Minimum von F Q kann nur vorliegen, wenn ∂F Q ∂cj = 0 für alle j = 0...m m P 0 = 2 = 2 ; n X m X i=1 k=0 n X m X i=1 k=0 n X m X !∂ ck xki k=0 − yi ck xki − yi ∂cj ! ck xki − yi xji ck xki xji = i=1 k=0 n X xji yi (O.3) i=1 Gl. (O.3) liefert ein lineares Gleichungssystem zur Bestimmung der gesuchten Konstanten ck : P n i P P x i i P x2i i ··· P m P i i | xi i P i P xi i P x2i i P x3i i x2i ··· x3i ··· Pi x4i ··· i P ··· ··· ··· m+1 P m+2 xi xi ··· i {z ajk P i xim+1 xm+2 i ··· x2m i P i xm i · c0 P yi Pi c1 xy i i i P = x2i yi c2 i ··· ··· P m cm } | {z } ck - 186 - i | xi yi {z rj } (O.4) O.3. Skalierung Die Koeffizientenmatrix A und der Vektor r hder rechten Seite erhält i man programmtechnisch am 2 m einfachsten mit Hilfe der Zeilenvektoren Xi = 1 xi xi · · · xi zu: A= n X Xi T Xi (dyadisches Produkt) und r = i=1 O.3 n X yi Xi T i=1 Skalierung O.3.1 Normierung der xi Gl. (O.4) könnte nun mit dem Gaußschen Algorithmus nach den cj aufgelöst werden. Sind jedoch einige xi > 1.0, ist eine Pivotsuche erforderlich, weil die Koeffizienten von A dann nach unten und rechts zunehmen! Besser ist es, die Ausgangswerte auf das Einheitsintervall [0.0 . . . 1.0] zu normieren x̂i = xi − min(x) . max(x) − min(x) und das System wie oben beschriebenen aufzustellen, jedoch mit den x̂i anstelle der xi . Es ist klar, daß dieselbe Skalierung auch später bei der Interpolation zusätzlicher Wertepaare angewendet werden muß. O.3.2 Vorskalierung der xi Erstreckt sich der Bereich der Stützstellen xi über mehrere Zehnerpotenzen, ist die Normierung nach O.3.1 nicht ausreichend, weil dann viele xji im Rahmen der relativen Genauigkeit Null sind gegenüber 1.0. Abhilfe bieten Vorskalierungen wie x̃i = √ xi oder x̃i = log(xi ) mit anschließender Normierung x̂i = x̃i − min(x̃) max(x̃) − min(x̃) Eine entsprechende Skalierung für die Funktionswerte yi wird erst notwendig, wenn das Verhältnis |min(y)/max(y)| in der Größenordnung der relativen Genauigkeit der rechnerabhängigen Zahlendarstellung liegt. Diese Werte gehen nur linear in die rechte Seite ein. O.3.3 Normierung des Systems und Genauigkeit Wenn (O.4) durch die Anzahl der Stützstellen n dividiert wird, ist der größte Koeffizient a11 = 1.0 . Da A symmetrisch ist, kann zur Lösung das Verfahren von Cholesky benutzt werden. Dieses sollte jedoch modifiziert werden: Bei hohen Polynomgraden m werden die ajk sehr klein! Bei Auffinden eines Diagonalgliedes app < ε (z.B. ε = 10−10 bei doppelter Genauigkeit) während der Zerlegung muß die Auflösung abgebrochen und das System mit verkleinertem Polynomgrad (m = p − 2) neu berechnet werden. - 187 - KAPITEL O - Interpolation O.4 Testbeispiel Zum Testen wird ein Datensatz mit 14 Stützstellen verwendet: x y 1.47·102 0.762 1.17·103 0.758 4.32·103 0.754 1.67·104 0.747 6.78·104 0.737 2.82·105 0.722 9.30·105 0.705 x y 2.30·106 0.687 4.80·106 0.669 8.93·106 0.652 1.53·107 0.634 2.46·107 0.617 3.79·107 0.599 5.04·107 0.586 In den folgenden Abbildungen wird gezeigt, wie gut die verschiedenen Approximationen bei unterschiedlichen Polynomgraden und Vorskalierungen sind. Die Stützstellen sind in den Zeichnungen durch zentrierte Symbole hervorgehoben, die ausgezogenen Linien zeigen den Verlauf der Interpolation. Abb. 1: Quadratische Ansätze Abb. 2: Kubische Ansätze Abb. 3: Ansätze 4. Ordnung Abb. 4: Maximal erreichbare Ordnung Quadratische Ansätze sind i.a. nicht ausrechend (1), dagegen liefern kubische schon sehr brauchbare Ergebnisse, abhängig von der gewählten Vorskalierung (2). Bei Ansatz 4. Ordnung (3) sind Stützstellen und Approximation bei Vorskalierung kaum noch zu unterscheiden. Reine Polynomansätze ohne Vorskalierung ergeben einen welligen Verlauf, was sich mit Erhöhung der Ordnung sogar noch verschlimmert; Funktionswerte zwischen den Stützstellen und besonders Ableitungen sind i.d.R. unbrauchbar. - 188 - Kapitel P MATLAB – Kurzanleitung - 189 - KAPITEL P - Programmieren mit Matlab P.1 Was ist Matlab? Matlab (Matrix-Labor) ist eine interpreterbasierte Programmiersprache, die zusätzlich für kleine Anwendungen im interaktiven Modus betrieben werden kann. Der Hauptdatentyp ist eine zweidimensionale doppeltgenaue Matrix mit zeilenweiser Speicherung. Deklarationen entfallen weitestgehend, neue Variablen werden durch ihren ersten Gebrauch definiert. Fast alle Funktionen können sowohl auf Skalare wie auf Vektoren und Matrizen angewendet werden. Das Programmpaket Matlab besteht aus dem Basisprogramm selbst und vielen Toolboxen, die zusätzliche Funktionen für spezielle Anwendungen bieten und auch zusätzlich bezahlt werden müssen. Dennoch bietet allein das Basisprogramm dem Ingenieur ein erstklassiges Handwerkszeug, mit dem viele Aufgabenstellungen in kompakter Form einfach und doch komfortabel gelöst werden können. Die folgenden Hinweise geben einen kurzgefaßten Überblick der Syntax von Matlab. Es werden nur einige elementare Funktionen erläutert, die zur Lösung der Übungsaufgaben benötigt werden, ohne dabei einen Anspruch auf Vollständigkeit zu erheben. Für eine ausführliche Beschreibung sei auf die Hilfe unter Matlab wie Help-Window oder Help-Desk (HTML) verwiesen, wo alle Operatoren und Funktionen umfassend erklärt werden. Für Interessierte bietet die Homepage der Firma Mathworks http://www.mathworks.com zusätzliche Informationen sowie alle Handbücher zum kostenlosen Download. P.1.1 Studentenversion Die Studentenversion ist mit ca. 90 Euro relativ teuer. Es gibt jedoch einige Clones mit fast identischer Syntax, beispielsweise SciLab: http://www-rocq.inria.fr/scilab/ - 190 - P.2. Operatoren und Funktionen P.1.2 Erste Schritte Nach dem Öffnen des Programms befindet man sich im Command-Window, in dem sämtliche Befehle schrittweise eingegeben werden können und die Ergebnisse direkt erscheinen. Für etwas komplexere Aufgaben ist diese Art des Vorgehens sehr mühselig und es bietet sich an, ein Programm mit sämtlichen Befehlen zu schreiben und dieses aus dem Command-Window aufzurufen. Die Programmierung erfolgt am besten mit dem Matlab-Editor/Debugger, da hier Schlüsselworte farbig dargestellt werden und somit ein besserer Überblick gewährleistet ist. Prinzipiell ist jedoch jeder beliebige Texteditor brauchbar, solange die Programme als ASCII-Datei mit der Endung .m gespeichert werden. Der Matlab-Editor wird entweder aus dem Command-Window mit dem Befehl edit oder über die Menuleiste über File → New bzw. Klicken des entsprechenden Icons in der Symbolleiste geöffnet. Vor dem Arbeiten sollte aus Gründen der Übersicht noch ein Arbeitsverzeichnis eingerichtet werden, das dann als Current Directory gesetzt wird. Dies geschieht entweder im Command-Window mit dem DOS-Befehl cd Verzeichnis oder durch Öffnen des Path-Browsers über die Menuleiste mit File → Set Path bzw. Klicken des entsprechenden Icons in der Symbolleiste. Im Path-Browser kann dann über den Knopf Browse das Arbeitsverzeichnis einfach eingestellt werden. Sollen nun Daten für ein Programm importiert oder exportiert werden, erfolgt dies dann automatisch mit dem aktuellen Arbeitsverzeichnis unter Verzicht auf umständliche Pfadangaben. Es folgt eine kurze Beschreibung von einigen Operatoren und Funktionen, die in den ersten Übungen verwendet werden. Im weiteren Verlauf der Veranstaltung sollte diese Liste nach Bedarf selbständig erweitert werden. P.2 P.2.1 Operatoren und Funktionen Allgemeine Funktionen edit Aufruf des Editors, edit Programm öffnet ein vorhandenes Programm mit dem Editor. cd Verzeichnis Ändern des aktuellen Arbeitsverzeichnisses. cd allein zeigt das aktuelle Verzeichnis an. dir Auflisten aller Dateien im aktuellen Verzeichnis who Auflisten aller aktuell definierten Variablen, ausführliche Liste mit whos clear Variablen Löschen der angegebenen Variablen, clear all löscht sämtliche Variablen clc Clear Command-Window, alte Ausgaben löschen - 191 - KAPITEL P - Programmieren mit Matlab P.2.2 Dateien, Ein- und Ausgabe load Datei Laden der Binär-Datei Datei.mat, in der verschiedene Variablen gespeichert sind. load ’Datei’ wie oben, jedoch Werte in ASCII-Klarschrift. Durch Leerzeichen oder Tabulator getrennte Werte werden dann in der Variablen ’Datei’ gespeichert. save Datei Speichern aller aktueller Variablen in der Binär-Datei Datei.mat. Zum Speichern bestimmter Variablen: save Datei Variablenliste. P.2.3 Operatoren Alle Operatoren existieren in Funktionsform und als eigentlicher Operator. So sind z.B. 4-1 äquivalent zu minus(4,1) und x>y identisch mit gt(x,y). Hier wird nur die Operatoren-Schreibweise verwendet, da sie in fast allen Fällen zum Einsatz kommt. = Zuweisung, A = B speichert den oder die Werte von B in A + Addition von Skalaren, Vektoren oder Matrizen − Subtraktion von Skalaren, Vektoren oder Matrizen ∗ Multiplikation von Skalaren bzw. bei Vektoren das Skalarprodukt und bei Matrizen das Matrixprodukt / (Rechts-)Division von Skalaren, Vektoren und Matrizen, A/B entspricht A ∗ B −1 \ (Links-)Division von Skalaren, Vektoren und Matrizen, A\B entspricht A−1 ∗ B ˆ Potenzierung von Skalaren oder quadratischen Matrizen, wobei der Exponent ein Skalar sein muß, z.B. xˆy oder Xˆy. .∗ Elementweise Multiplikation von gleich großen Matrizen, z.B. C(i, k) = A(i, k). ∗ B(i, k) ./ Elementweise Multiplikation gleich großer Matrizen, z.B. C(i, k) = A(i, k)./B(i, k) .ˆ ebenso, Potenzierung == Vergleichsoperator (gleich) ∼= Vergleichsoperator (ungleich) < Vergleichsoperator (kleiner) > Vergleichsoperator (größer) <= Vergleichsoperator (kleiner oder gleich) >= Vergleichsoperator (größer oder gleich) & Logische Verknüpfung (und) | Logische Verknüpfung (oder) - 192 - P.2. Operatoren und Funktionen P.2.4 Matrix-Funktionen [a1 . . . an ] Definiert einen Vektor oder eine Matrix. Die Elemente können durch Leerzeichen, Komma (beide springen in die nächste Spalte) oder Semikolon (springt in die nächste Zeile) getrennt werden. [1, 2, 3] oder [1 2 3] liefern einen Zeilenvektor und [1,2;3,4] eine 2 × 2-Matrix. X(i, k) k-tes Element der i-ten Zeile von X : anstelle eines Index: alle möglichen Werte. X(i, :) bezeichnet die gesamte i-te Zeile, X(:, k) die k-te Spalte der Matrix X. Dient auch zur Definition eines äquidistanten Vektors, z.B. Y = 1 : 3 → Y = [1 2 3] oder x = 3 : −0.5 : 1 → x = [3 2.5 2 1.5 1] length(x) Länge eines Vektors bzw. Zeilenanzahl einer Matrix size(X) Größe einer einer Matrix, Ergebnis ist ein Vektor! sum(y) Summe der Elemente eines Vektors zeros(m, n) Erzeugt mit Nullen vorbelegte m × n-Matrix ones(m, n) Erzeugt mit Einsen vorbelegte m × n-Matrix P.2.5 Mathematische Funktionen abs(x) Liefert den Absolutwert der Variablen x, bei Matrizen eine gleich große Matrix mit allen Beträgen! log10(x) Logarithmus von x zur Basis 10. sin(x) sin(x), x im Bogenmaß angeben! fix(x) Runden von x durch Abschneiden der Dezimalen: z.B. fix(3.99) ; 3 bzw. fix(−3.99) ; −3 Fast alle Mathematischen Funktionen sind auch auf Matrizen anwendbar (siehe abs). P.2.6 Textvariablen und -Konstanten x=’T ext’ Hochkommata definieren einen Textstring. x wird eine Zeichenkette, die die ASCIICodierung von T ext enthält. Mit diesen Textstrings kann jedoch natürlich nicht gerechnet werden. num2str(y) Konvertiert den Zahlenwert von y in eine Zeichenkette. Nach der Variablen kann noch ein Format (wieder als String) angegeben werden, um die Zahlendarstellung zu spezifizieren. Beispielsweise ergibt ’%8.3f’ insgesamt 8 Zeichen mit 3 Dezimalen in Festkommadarstellung, also 4 Vorkommastellen, Dezimalpunkt und Mantisse. - 193 - KAPITEL P - Programmieren mit Matlab P.2.7 Steuerungskonstrukte for i= Vektor Befehle end Wiederholungsschleife. Die Befehle innerhalb der Schleife werden so oft ausgeführt, bis die Laufvariable i jeden Wert des Vektors V ektor einmal angenommen hat. Dabei wird mit dem ersten Element begonnen und mit dem letzten geendet. Beispiele: for i=1:10 oder for n=5:2:35 if Bedingung Befehle end Bedingter Anweisungsblock: Die Befehle innerhalb des Blocks werden nur ausgeführt, wenn Bedingung erfüllt ist. Beispiele: if i > 5 oder if (j== 0 & abs(x(k))<20.5) while Bedingung Befehle end Bedingte Schleife: Die Befehle innerhalb der Schleife nur ausgeführt, wenn die Bedingung hinter while erfüllt ist und so lange wiederholt, bis sie nicht mehr erfüllt ist. Beispiele: while i > 5 oder while (j== 0 & abs(x(k))<20.5) function Dient der Erzeugung einer Funktion und muß am Anfang eines Programms stehen. Die Syntax lautet: function [Ergebnisliste]∗ = Name(Eingabeparameter) Anweisungen† Name = Ergebnis return (Vorzeitige) Rückkehr aus einer Funktion in das aufrufende Programm. ∗ † optional Die Variablen innerhalb der Funktion sind alle lokal, also nach Ausführung nicht mehr vorhanden. - 194 - P.2. Operatoren und Funktionen P.2.8 Graphik figure Öffnet eine leere Graphik, in der dann etwas dargesteItt werden kann. plot(x, y) SteIlt die Werte des Vektors y über den Werten des Vektors x in einem zweidimensionalen Graphen dar. Nach dem y-Vektor können noch Optionen (als Textstring) zur DarsteIlung folgen, z.B. zeichnet ’r’ eine rote Kurve und ’g--’ eine grüne gestrichelte. loglog(x, y) wie zuvor, aber mit doppeltlogarithmischem Achsenkreuz. axis(Limits) Begrenzt x- und y-Achse gemäß den Werten des 4-Elemente Vektors Limits, der definiert ist als [xmin , xmax , ymin , ymax ]. xlabel(Text) Beschriftet die x-Achse mit dem Textstring Text. ylabel(Text) Ebenso für die y-Achse hold on Hält den Graphen, d.h. vorhandene Kurven werden nicht gelöscht. Weitere Graphen werden in das jetzt geöffnete Graphikfenster gezeichnet. hold off Setzt hold on zurück, d.h bei Darstellen der nächsten Kurve werden alle anderen gelöcht. grid on Erzeugt Gitterlinien im Graphen, die mit grid off entsprechend wieder entfernt werden können. text(x, y, String) Fügt den Inhalt des Textstrings String an der Position (x, y) im Graphen ein. - 195 - frei für Notizen