Verfahren zur Unterstützung der Arbeitsabläufe bei der Crash
Transcrição
Verfahren zur Unterstützung der Arbeitsabläufe bei der Crash
Verfahren zur Unterstützung der Arbeitsabläufe bei der Crash-Simulation im Fahrzeugbau Von der Fakultät Informatik, Elektrotechnik Informationstechnik der Universität Stuttgart zur Erlangung der Würde eines Doktors der Naturwissenschaften (Dr. rer. nat.) genehmigte Abhandlung vorgelegt von Norbert Frisch aus Hermannstadt Hauptberichter: Mitberichter: Prof. Dr. T. Ertl Prof. Dr. D. Roller Tag der mündlichen Prüfung: 3.02.2004 Insititut für Visualisierung und Interaktive Systeme Universität Stuttgart 2004 2 Kurzfassung Der starke internationale Wettbewerb in der Automobilindustrie zwingt die Unternehmen zu immer kürzeren Produktzyklen bei gleichzeitiger Reduzierung der Kosten bei der Fahrzeugentwicklung. Die passive Sicherheit ist dabei ein Thema von zunehmender Bedeutung in der Karosserieentwicklung. Die Optimierung der passiven Sicherheit erfolgt heute vor allem mit Hilfe von Crash-Simulationen am Rechner. Im Rahmen der vorliegenden Arbeit wurden Verfahren zur Vorbereitung (Preprocessing) und Steuerung von Crash-Simulationen entwickelt. Damit lassen sich CrashSimulationen effizienter und bereits in der frühen Phase der Karosserieentwicklung durchführen, in der Änderungen noch mit wenig Aufwand verbunden sind. Die Forschungsarbeiten wurden im Rahmen der BMBF-Verbundprojekte AutoBench und AutoOpt und in enger Zusammenarbeit mit dem Automobilhersteller BMW realisiert. Ziel war die Entwicklung von Softwareprototypen zur Unterstützung der Berechnungsingenieure bei der Durchführung von Crash-Simulationen. Zunächst werden Techniken zur Erkennung, Visualisierung und Beseitigung der bei der Diskretisierung des CAD-Modells entstandenen Netzinkonsistenzen präsentiert. Ergänzt werden diese Verfahren durch einen Algorithmus zur Gitterrelaxation, der die Gleichmäßigkeit der Finiten Elemente nach der Beseitigung von Netzinkonsistenzen wiederherstellt. Anschließend wird ein Verfahren zur Flanscherkennung beschrieben, welches als Grundlage für weitere Algorithmen dient. Darauf aufbauend wird eine Vorgehensweise zur automatischen Definition von Schweißpunktlinien auf Flanschen vorgestellt. Ein breites Spektrum von Änderungen der Geometrie von Bauteilen durch Verformung bietet die sogenannte Free-Form Deformation. Im Rahmen dieser Arbeit wurde dieses Verfahren weiterentwickelt und hinsichtlich Benutzerfreundlichkeit und Effizienz angepasst. In Verbindung mit der Flanscherkennung wurde darauf aufbauend ein iterativer Algorithmus zur Justierung des Abstandes von Flanschen entwickelt. Damit können außerdem Durchdringungen von Finiten Elementen auf Flanschen behoben werden. Beim sogenannten Massentrimm geht es schliesslich um die vereinfachte Darstellung von nichttragenden Teilen. Dies vereinfacht den Berechnungsaufwand, da weniger Finite Elemente bei der Simulation berücksichtigt werden müssen. Durch die in dieser Arbeit entwickelten Preprocessing-Verfahren lässt sich das FiniteElemente-Netz für die Simulation aufbereiten, und es können Änderungen und Ergänzun- 4 gen am Netz vorgenommen werden. So kann z.B. die Auswirkung kleiner Änderungen auf das Simulationsverhalten rasch untersucht werden, und durch Ergänzung eines noch unvollständigen Finite-Elemente Modells lassen sich bereits in der frühen Entwicklungsphase Erkenntnisse über das Crashverhalten gewinnen. Die hier vorgestellten Verfahren wurden innerhalb einer Anwendung zur Visualisierung und Modellierung von Finite-Elemente-Modellen realisiert. Zusätzlich wurde diese Anwendung an die Integrationsumgebung CAE-Bench angebunden. CAE-Bench bietet eine Web-basierte Benutzerführung und eine einheitliche Bedienoberfläche für die verschiedenen Anwendungen bei der Crash-Simulation. Es wurde ein spezielles Java-Applet entwickelt, welches in die CAE-Bench Web-Seite eingebettet wird. Dieses Applet kommuniziert mit der Anwendung über CORBA und mit der CAE-Bench Web-Seite mit Hilfe von Java und Javascript Methodenaufrufen. Eine weitere CORBA-Schnittstelle der Anwendung ermöglicht den Abruf und die Visualisierung von Zwischenergebnissen der laufenden Simulation. So lässt sich frühzeitig Einfluss auf die Simulation nehmen, ein Vorgehen, das als Simulation Steering bezeichnet wird. Die vorliegende Arbeit kombiniert Ansätze aus den verschiedenen Bereichen der Informatik, z.B. aus dem Bereich der geometrischen Algorithmen, der Computergraphik, der Visualisierung und der geometrischen Modellierung, sowie aus dem Bereich der Benutzerschnittstellen und der Web-basierten und Middleware-Technologien. Durch die Beiträge dieser Arbeit wird eine schnelle und frühzeitige Durchführung von Crash-Simulationen unterstützt. Dies führt durch Simultaneous Engineering zu einer signifikanten Verkürzung der Entwicklungszeiten bei der Fahrzeugkonstruktion. Inhaltsverzeichnis 1 Einführung 13 1.1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.2 Szenario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.3 Beiträge dieser Arbeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.4 Gliederung der Arbeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2 Grundlagen 21 2.1 Arbeitsabläufe bei der Karosserie-Entwicklung . . . . . . . . . . . . . . . . 21 2.2 Preprocessing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.3 Finite-Elemente-Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.4 Grundlagen der Visualisierung . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.5 Grundlagen der Computergraphik . . . . . . . . . . . . . . . . . . . . . . . 31 2.5.1 Die Graphik-Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.5.2 Beleuchtung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 2.5.3 Texturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Visualisierung von Finite-Elemente-Modellen . . . . . . . . . . . . . . . . . 36 2.6.1 Verwendete Werkzeuge . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.6.2 Beschleunigung des Bildaufbaus . . . . . . . . . . . . . . . . . . . . 38 2.6.3 Wiederverwertung von Bildspeicherinhalten . . . . . . . . . . . . . 39 2.6.4 Verwendung von Texturen . . . . . . . . . . . . . . . . . . . . . . . 41 Effiziente Distanzbestimmung mit Hilfe von Bounding Volumes . . . . . . . 42 2.6 2.7 6 INHALTSVERZEICHNIS 3 Perforationen und Penetrationen 45 3.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 3.2 Erkennung und Visualisierung von Perforationen . . . . . . . . . . . . . . . 46 3.3 Beseitigung von Perforationen . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.4 Gitterrelaxation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 3.5 Erkennung und Visualisierung von Penetrationen . . . . . . . . . . . . . . 52 3.6 Beseitigung von Penetrationen . . . . . . . . . . . . . . . . . . . . . . . . . 53 3.7 Ergebnisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 4 Erkennen von Flanschen 59 4.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 4.2 Vorgehensweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 4.3 Ergebnisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 5 Automatische Definition von Schweißpunktverbindungen 65 5.1 Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 5.2 Szenario 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 5.3 Szenario 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 5.4 Szenario 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 5.5 Zeitverhalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 6 Veränderung von Bauteilen mittels Free-Form Deformation 77 6.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 6.2 Grundlagen der Free-Form-Deformation . . . . . . . . . . . . . . . . . . . . 78 6.3 Grundlagen der B-Splines . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 6.4 Verwandte Arbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 6.5 Explizite Berechnung der Verschiebungen . . . . . . . . . . . . . . . . . . . 90 6.6 Überlegungen zur Bearbeitung von FE-Modellen mittels DMFFD . . . . . 94 6.7 Verwendung eines temporären Kontrollgitters . . . . . . . . . . . . . . . . 95 6.8 Verwendung von B-Splines über uniformem Knotenvektor . . . . . . . . . . 97 INHALTSVERZEICHNIS 6.9 Verwendung eines lokalen FFD-Volumens . . . . . . . . . . . . . . . . . . . 7 98 6.10 Die Benutzerschnittstelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 6.11 Justierung des Abstandes von Flanschen . . . . . . . . . . . . . . . . . . . 106 6.12 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 7 Massentrimm 113 8 Integration 117 8.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 8.2 CORBA Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 8.3 Verwandte Arbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 8.4 Vorbereitende Arbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 8.5 Anbindung des Visualisierungstools an den FE-Solver . . . . . . . . . . . . 124 8.6 8.5.1 Schnittstellengestaltung mit Hinblick auf zeitliche Kohärenz . . . . 124 8.5.2 Besonderheiten beim Verbindungsaufbau . . . . . . . . . . . . . . . 125 Einbettung des Visualisierungstools in die Integrationsplattform . . . . . . 126 9 Gesamtbetrachtung der Prozesskette 131 10 Zusammenfassung und Ausblick 135 Abstract 137 8 INHALTSVERZEICHNIS Abbildungsverzeichnis 1.1 Einfluß der Datenauflösung auf das Simulationsergebnis . . . . . . . . . . . 14 1.2 Das Visualisierungstool für Finite-Elemente-Modelle CrashViewer . . . . . 17 2.1 Zusammenwirken von Daten und Simulation [35] . . . . . . . . . . . . . . . 22 2.2 Entwicklung von Crash-Simulation in der Industrie nach [37] . . . . . . . . 23 2.3 Die Prozesskette in der CAE-Simulation nach [86] . . . . . . . . . . . . . . 24 2.4 Simulationszyklus beim Karosserieentwurf . . . . . . . . . . . . . . . . . . 25 2.5 Typen von finiten Elementen bei der Crash-Simulation. . . . . . . . . . . . 27 2.6 Der Simulations- und Visualisierungszyklus . . . . . . . . . . . . . . . . . . 29 2.7 Die Graphik-Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.8 Darstellung einer Kugel, links mit und rechts ohne Beleuchtungseffekte. . . 33 2.9 Richtungen und Winkel bei der Beleuchtungsberechnung . . . . . . . . . . 34 2.10 Schattierung am Beispiel zweier Dreiecke . . . . . . . . . . . . . . . . . . . 35 2.11 Anwendung einer Textur . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.12 Bildbasierte Translation parallel zur Bildebene . . . . . . . . . . . . . . . . 40 2.13 Bildbasierte Translation senkrecht zur Bildebene . . . . . . . . . . . . . . . 40 2.14 Verwendung von Texturen bei der Visualisierung von finiten Elementen . . 41 2.15 Bounding-Volume-Hierarchie . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.1 Skizze: Entstehung von Perforationen und Penetrationen . . . . . . . . . . 45 3.2 Visualisierung und Beseitigung einer Perforation . . . . . . . . . . . . . . . 47 3.3 Symmetrische Perforation . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 10 ABBILDUNGSVERZEICHNIS 3.4 vollständige vs. nicht vollständige Trennung durch Perforation . . . . . . . 49 3.5 Knoten mit Projektionen auf mehrere Elemente . . . . . . . . . . . . . . . 49 3.6 Beispielskizze zur Relaxation . . . . . . . . . . . . . . . . . . . . . . . . . . 50 3.7 Skizze: Umbrella-Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 3.8 Gitterrelaxation (Beispiel) . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 3.9 Umgebung eines Elements, in der Penetrationen auftreten können . . . . . 54 3.10 Ungleichmäßige Verteilung der Penetrationskräfte . . . . . . . . . . . . . . 54 3.11 Mehrfache Penetration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 3.12 Praxisbeispiel mit mehreren Perforationen . . . . . . . . . . . . . . . . . . 56 3.13 Farbliche Visualisierung der Perforationen auf dem zu verändernden Bauteil 56 3.14 Ansicht nach Behebung der Perforationen . . . . . . . . . . . . . . . . . . 56 3.15 Verschiebung eines einzelnen, vom Benutzer spezifizierten Netzknotens, zur Behandlung von Sonderfällen. . . . . . . . . . . . . . . . . . . . . . . . . . 57 3.16 Detailansicht vor und nach der Gitterrelaxation . . . . . . . . . . . . . . . 57 3.17 Visualisierung der Bauteilabstände, vor und nach der Beseitigung der Penetrationen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 4.1 Skizze Flanscherkennung: Nachbarschaftssuche, Baumdiagramm . . . . . . 62 4.2 Ringförmig geschlossener Flansch mit ungleichmäßiger Breite . . . . . . . . 63 4.3 Flansch gegeben durch zwei überlappende Bleche . . . . . . . . . . . . . . 63 4.4 Flansch mit Unebenheiten (Sicken) . . . . . . . . . . . . . . . . . . . . . . 64 5.1 Sicken und Lücken erschwerden die Flanscherkennung . . . . . . . . . . . . 67 5.2 Randfindung für Schweißpunktlinien . . . . . . . . . . . . . . . . . . . . . 70 5.3 Schritte beim Anlegen einer Schweißpunktlinie . . . . . . . . . . . . . . . . 70 5.4 Anwendungsbeispiel für Szenario 1 . . . . . . . . . . . . . . . . . . . . . . 71 5.5 Skizze: Suche der Flansch-Enden . . . . . . . . . . . . . . . . . . . . . . . 72 5.6 Anwendungsbeispiel für Szenario 2 . . . . . . . . . . . . . . . . . . . . . . 73 5.7 Anwendungsbeispiel für Szenario 3 . . . . . . . . . . . . . . . . . . . . . . 74 5.8 Skizze: Flanschkriterium Gitterausrichtung . . . . . . . . . . . . . . . . . . 75 ABBILDUNGSVERZEICHNIS 11 5.9 Skizze: Ungeeignete Elemente . . . . . . . . . . . . . . . . . . . . . . . . . 75 6.1 Verformung eines Zylinders durch Free-Form Deformation . . . . . . . . . . 78 6.2 Beispiele von Bézier Kurven und deren Basisfunktionen . . . . . . . . . . . 80 6.3 2D-Prinzip der FFD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 6.4 Lineare Präzision (Beispiel) . . . . . . . . . . . . . . . . . . . . . . . . . . 82 6.5 Inkonsistentes Deformationsverhalten bei Bézier-Splines . . . . . . . . . . . 84 6.6 B-Splines mit n + 1-fachen Endknoten . . . . . . . . . . . . . . . . . . . . 86 6.7 B-Splines über uniformem Knotenvektor . . . . . . . . . . . . . . . . . . . 86 6.8 Muti-Resolution-Ansatz nach Kobbelt . . . . . . . . . . . . . . . . . . . . . 91 6.9 Verschiebung der Kontrollpunkte bei DMFFD (Beispiel) . . . . . . . . . . 93 6.10 Relevante Kontrollpunkte bei der DMFFD-Verschiebung eines Objektpunktes 94 6.11 Deformationsverhalten und Anordung der Kontrollpunkte bei Ein-PunktVerschiebungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 6.12 Beschränkung der Deformation auf eine Dimension (Beispiel). . . . . . . . 101 6.13 Verschieben eines Bereiches unter Beibehaltung seiner Form . . . . . . . . 103 6.14 Benutzerschnittstelle für DMFFD . . . . . . . . . . . . . . . . . . . . . . . 105 6.15 Beseitigung von Perforationen und übergroßen Bauteilabständen . . . . . . 109 6.16 Beseitigung von Perforationen durch Justierung des Abstandes auf einem längeren Flansch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 7.1 Visualisierung von vier strukturlosen Massen durch 3D-Glyphen . . . . . . 115 7.2 Visualisierung eines Bauteils zusammen mit dessen Trägheitseigenschaften.. 115 8.1 Die CORBA Client-Server Architektur . . . . . . . . . . . . . . . . . . . . 119 8.2 Die Benutzeroberfläche von COVISE . . . . . . . . . . . . . . . . . . . . . 121 8.3 Der PamServer simuliert ein CORBA-fähiges PAM-CRASH 8.4 Zusammenspiel der Komponenten bei der Crash-Visualisierung . . . . . . . 127 8.5 Anbindung des Visualisierungstools an CAE-Bench . . . . . . . . . . . . . 129 8.6 CAE-Bench Web Seite mit eingebettetem Java Applet . . . . . . . . . . . . 130 . . . . . . . . 122 10.1 Verkürzung der Entwicklungszeiten in der Karosserieentwicklung . . . . . . 135 12 ABBILDUNGSVERZEICHNIS Kapitel 1 Einführung 1.1 Einleitung Kein Werkzeug und kein wissenschaftliches Instrument hat in der Geschichte der Menschheit einen so gewaltigen technischen Wandel in einer so kurzen Zeit bewirkt wie der Computer. Für die Numerische Simulation und das Wissenschaftliche Rechnen ist insbesondere die Leistungsfähigkeit des Computers ausschlaggebend, dazu die Kommunikationsgeschwindigkeit und die weltweite Vernetzung. Die Leistungssteigerung lässt sich auch für die Zukunft vorhersagen: Das sogenannte Moore’sche Gesetz besagt, dass sich die Rechenleistung von Computern durch deren Weiterentwicklung alle 18 Monate verdoppeln wird. Mit dem stetigen Wachstum der verfügbaren Rechenleistung nimmt die Komplexität der rechnergestützt lösbaren Problemstellungen zu. Die Leistung von 3D-Graphikhardware wächst derzeit sogar noch schneller als die Rechenleistung des Hauptprozessors und übertrifft damit das Moore’sche Gesetz. Die Entwicklung neuer, effizienter Algorithmen trägt zusätzlich zur Steigerung der Leisungsfähigkeit von Computern bei. Auch die Parallelisierung, d.h. die Aufteilung der Berechnung auf mehrere Prozessoren, ermöglicht in vielen Fällen eine Beschleunigung der Berechnung. Der große Leistungszuwachs der Graphikprozessoren ist nicht zuletzt auch der guten Parallelisierbarkeit von Graphikroutinen zu verdanken. Trotz dieser raschen Entwicklung der Rechnerkapazität gibt es viele Anwendungsgebiete, deren Bedarf an Rechenleistung auch in absehbarer Zukunft nicht gedeckt sein wird. Rechnergestützte Simulationen beispielsweise liefern um so genauere Ergebnisse, je feiner das Ausgangsproblem diskretisiert ist. Besonders bei chaotischen Systemen, etwa beim Wetter, wo kleinste Änderungen der Eingabeparameter eine bedeutende Änderung des Ergebnisses bewirken können, ist eine möglichst detaillierte Aufstellung der Anfangsparameter erforderlich, wie das Beispiel aus Abbildung 1.1 zeigt. 14 Einführung Abbildung 1.1: Einfluß der Datenauflösung auf das Simulationsergebnis: Wettersimulation, links mit 120km und rechts mit 60km Auflösung der Ausgangsdaten [28] Für jede Wetterprognose müssen dabei ungefähr 250 Millionen Unbekannte berechnet werden. Erst seit etwa zwei Jahrzehnten sind Großrechner so leistungsfähig, dass die Wetterberechnungen weniger Zeit erfordern als die Wetterentwicklung selbst dauert: Erst seit dieser Zeit ist eine realistische numerische Wetterprognose also überhaupt möglich. Dies ist nur eine von vielen Anwendungsmöglichkeiten von rechnerbasierter Simulation realer Vorgänge. Ist eine Simulation durchgeführt, stellt sich die Frage nach der Auswertung der Ergebnisse. Meist bietet eine Visualisierung der Ergebnisse die besten Voraussetzungen für deren Auswertung, da der Mensch visuelle Information am effizientesten verarbeiten kann. Simulation wird erst durch ihre Visualisierung, dreidimensional oder als Animation, interessant. Milliarden von Zahlen, welche die klimatische Entwicklung in den nächsten hundert Jahren beschreiben, bleiben langweilig und sind auch für Experten nur begrenzt aussagefähig. Aber die sichtbar gemachte globale Erwärmung, das sichtbar gemachte Ozonloch, rüttelt die Öffentlichkeit und die Politiker auf, gibt auch dem Fachmann neue Einsichten, liefert ihm Ideen und wirft neue Fragen auf [29]. Die dreidimensionale, interaktive Visualisierung ermöglicht die visuelle Vermittlung umfangreicher Informationen und die Wahrnehmung komplexer Zusammenhänge. Die Möglichkeit, dreidimensionale Objekte interaktiv zu rotieren, verbessert den dreidimensionalen Eindruck beträchtlich, besonders bei der üblichen, zweidimensionalen Darstellung am Bildschirm. Durch interaktive Rotation kann zudem rasch ein Eindruck von der gesamten äußeren Form und Beschaffenheit eines Objektes vermittelt werden. 3D-Visualisierung erfordert neben Rechenleistung meist auch eine beträchtliche Graphikleistung des Rechners, speziell wenn es sich um große Datensätze handelt und wenn Interaktivität erwünscht wird. Interaktivität bedeutet hier, dass der Benutzer verschiedene Parameter, den Blickpunkt oder die Farbzuordnung verändern kann, wobei das Resultat dieser Änderungen mit nur geringer Verzögerung angezeigt wird. Je nach Anwendungsart 1.2 Szenario 15 beträgt die akzeptable Verzögerung (“Antwortzeit”) zwischen einer zehntel Sekunde im Falle von flüssigen Animationen und einigen Sekunden bei nur gelegentlicher Veränderungen der Darstellungsparameter. Um die Interaktivität zu gewährleisten, wurde auch im Rahmen der vorliegenden Arbeit großer Wert auf die Effizienz der Algorithmen und deren Implementation gelegt. 1.2 Szenario Das Thema der hier vorgestellten Arbeit ist im Berech der Automobilentwicklung angesiedelt. Beim Entwurf und der Entwicklung von Automobilen ist numerische Simulation heute eine der wichtigsten Technologien. Crash-Simulation, Umformtechnik, Analysen von Stabilität und Schwingungsverhalten der Karosserie und anderer Baugruppen sind nur einige Anwendungsfelder, in denen numerische Simulation den Entwicklungszyklus von Automobilen substantiell verkürzt hat. Speziell die Crash-Simulation ist für die vorliegende Arbeit von Bedeutung. Die Durchführung einer Crashsimulation, einschließlich Vorbereitung und Auswertung, ist eine Kette von Arbeitsschritten. Dabei sind eine Vielzahl von Ingenieuren aus mehreren Abteilungen und eine Vielfalt an Software-Werkzeugen beteiligt. Wurde ursprünglich die Fahrzeuggeometrie auf dem Papier entworfen, so werden nun schon seit geraumer Zeit sämtliche Bauteile des Fahrzeugs mit Hilfe von CAD-Software am Computer entwickelt. Die so erstellten Entwürfe können leichter verändert, in einer Datenbank verwaltet und durch andere Computerprogramme weiterverwendet werden. So können die CAD-Daten beispielsweise als Ausgangsdaten für die Werkzeugentwicklung oder für die Erkennung von Inkonsistenzen und Montageproblemen dienen. Ebenso dienen die CAD-Daten als Input für die Simulationen von Zusammenstößen, wie sie bei Verkehrsunfällen vorkommen. Crash-Simulationen sind äußerst hilfreich wenn es darum geht, die passive Sicherheit von Fahrzeugen zu erhöhen. Unter passiver Sicherheit versteht man den Schutz vor Verletzungen bei einem Unfall. Aktive Sicherheit hingegen dient der Vermeidung von Unfällen. Ursprünglich galt das Bestreben der Fahrzeugentwickler einzig der Erhöhung der aktiven Sicherheit, z.B. durch Verbesserungen an Fahrwerk, Bremsen, Lenkung, Beleuchtung. Fehler des Fahrzeuglenkers sind jedoch nicht auszuschließen, und mit zunehmendem Verkehrsaufkommen wurde klar, dass neben der aktiven auch die passive Sicherheit der Fahrzeuge erhöht werden muss. Bereits in den 1960er Jahren begannen die Entwickler verschiedener Automobilfirmen sich zu überlegen, wie man die Verletzungsgefahr bei einem Unfall mindern könnte. Wichtigste Ergebnisse dieser Überlegungen sind der Sicherheitsgurt, diverse Verbesserungen an Karosserie und Fahrgastzelle, sowie die Einführung des Airbags. Zur Überprüfung der passiven Sicherheit werden sogenannte Crash-Tests durchgeführt. Dabei wird unter genau festgelegten Bedingungen ein Unfall nachgestellt und dessen Aus- 16 Einführung wirkungen auf die Insassen analysiert. Die Rolle der Insassen wird hierbei durch spezielle Puppen, Dummies genannt, übernommen. Um die Schwachstellen eines Modells noch vor der Serienfertigung zu beseitigen, werden für die Crash-Tests eigens angefertigte Prototypen verwendet. Die Herstellung dieser Prototypen ist zeitaufwändig und teuer, was besonders wegen der Beschränkung auf eine einmalige Verwendung ins Gewicht fällt. Crash-Simulationen am Computer hingegen sind preisgünstiger und schneller, denn sie benötigen keine realen Prototypen. Waren sie in der Anfangszeit die Crash-Simulationen noch recht ungenau, können heute die realen Crash-Tests auf die vom Gesetzgeber vorgeschriebene Mindestanzahl beschränkt werden. Diese Entwicklung ist vor allem der stetig wachsenden Rechenleistung zu verdanken, welche für Simulationen zur Verfügung steht. Die Crash-Simulation am Computer wird mit Hilfe der Finite-Elemente-Methode (FEM) durchgeführt. Dazu müssen die im CAD-Format vorliegenden Geometriedaten diskretisiert werden, also in ein möglichst gleichmäßiges Gitter von kleinen Elementen zerlegt werden. Diese sogenannten finiten Elemente sind aus numerischen Gründen größtenteils Vierecke, wenn es um die Darstellung von Blechteilen geht. Je feiner das Gitter ist, also je kleiner und damit zahlreicher die finiten Elemente sind, umso genauer sind die Ergebnisse der Simulation, und umso größer ist der Bedarf an Rechnerleistung. Die Finite-Elemente-Simulation ist ein iterativer Prozess. Die kurze Zeit des Aufpralls wird hierzu in bis zu eine Million Intervalle unterteilt. Das Ergebnis nach einem Zeitschritt stellt dabei den Input für den nächsten Zeitschritt dar. Diese Daten umfassen unter anderem die Geschwindigkeiten, die auftretenden Kräfte und andere physikalische Parameter für jedes der finiten Elemente. Kleinere Elemente erfordern kleinere und damit mehr Zeitschritte. Ein Zeitschritt muss kleiner sein als die Zeit, die eine Schwingung, z.B. eine Schallwelle benötigt, um das kleinste Element zu traversieren. Damit ist klar, dass für eine Steigerung der Genauigkeit nicht nur mehr Elemente, sondern auch mehr Zeitschritte in die Berechnung einbezogen werden müssen. Die wachsende Rechnerleistung und Parallelisierung ermöglichen eine immer feinere Auflösung des Problemraumes bei gleichzeitiger Verkürzung der Rechenzeiten. Neben der Verbesserung der Genauigkeit führt dies auch zu einer wachsenden Größe der Datensätze, die den Input und den Output der Simulation darstellen. Für die Vorbereitung und Auswertung dieser Daten, dem sogenannten Pre- und Postprocessing, stellt die Datenmenge eine Herausforderung dar. Durch die fortgeschrittene Entwicklung der Graphik-Hardware und durch verbesserte Algorithmen ist heute dennoch eine interaktive, dreidimensionale Visualisierung der gesamten Fahrzeuggeometrie erreichbar. Das Visualisierungstool CrashViewer (Abb. 1.2), das im Rahmen dieser Arbeit weiterentwickelt wurde, kann sowohl die Eingabe- als auch die Ausgabedaten der CrashSimulation dreidimensional interaktiv darstellen. Für Eingabedaten gibt es eine Reihe von 1.3 Beiträge dieser Arbeit 17 Abbildung 1.2: Das Visualisierungstool für Finite-Elemente-Modelle CrashViewer Editiermöglichkeiten, auf die noch eingegangen wird. Ausgabedaten können animiert dargestellt werden, wobei eine Sequenz von etwa 50 Zeitschritten Einblick in den Crash-Ablauf bietet. Dabei können diverse physikalische Parameter durch Farben und Zusatzgeometrie visualisiert werden. Basierend auf CrashViewer entstand das kommerzielle Tool FEMod der Firma science+computing, das CrashViewer ablöst und auch in einer prototypischen Version der Universität Stuttgart für Forschungszwecke zur Verfügung steht. Die Arbeiten an CrashViewer wurden weitestgehend im Rahmen des BMBF Projektes Autobench durchgeführt. Die Beteiligung der Universität Stuttgart am Nachfolgeprojekt AutoOpt basiert schon auf dem FEMod Prototypen. 1.3 Beiträge dieser Arbeit Die vorliegende Arbeit liefert eine Reihe von Beiträgen zur Unterstützung der Arbeitsabläufe bei der Crash-Simulation. Durch die beschleunigten Arbeitsläufe wurde ein signifikanter Beitrag zur Verkürzung der Entwicklungszeiten neuer Fahrzeugmodelle geleistet. Die Neuentwicklungen dieser Arbeit umfassen verschiedene Algorithmen für das Preprocessing, sowie die Einbettung des Visualisierungstools in eine Integrationsumgebung. Außerdem wurde anhand eines Prototypen der Betrieb des Visualisierungstools in einer Virtual-Reality-Umgebung untersucht. 18 Einführung Unter Preprocessing versteht man die Aufbereitung der Karosseriedaten für die CrashSimulation. Beim Diskretisieren der CAD-Daten erhält man ein Finite-Elemente-Netz, welches Inkonsistenzen wie Perforationen und Penetrationen enthalten kann. Besonders in frühen Konstruktionsphasen sind auch ganze Bauteile zu verändern, zu ersetzen oder miteinander zu verbinden. Im Bereich des Preprocessing wurde ein Algorithmus zum automatischen Generieren von Schweißpunktverbindungen entwickelt. Dazu wurde eine Methode zur Erkennung von Flanschen sowie eine Methode zum Bestimmen der Mittellinie längs des Flansches bereitgestellt. Auf dieser Mittellinie oder auf einem Abschnitt davon können dann automatisch äquidistante Schweißpunkte generiert werden. Das automatische Setzen von Schweißpunkten bedeutet eine Reduzierung des Arbeitsaufwandes um ein Vielfaches beim Definieren von Schweißverbindungen. Anstatt die Position eines jeden Schweißpunktes mit der Computermaus anzugeben, reicht es nun, auf den Flansch zu zeigen, der verschweißt werden soll. Auch ein vollautomatisches Verschweißen sämtlicher Flansche ist möglich. Ferner wurde aufbauend auf dem Verfahren zur Flanscherkennung im Rahmen der Arbeit von Rose [26] eine Methode zum automatischen Generieren von Klebeverbindungen entwickelt. Im Gegensatz zu den Schweißpunktverbindungen handelt es sich bei Klebeverbindungen nicht um punktförmige, sondern um Flächenverbindungen. Ein weiteres Feature ist der Austausch von Bauteilen. Einzelne Bauteile können durch Varianten ersetzt werden, um deren Crash-Verhalten zu testen oder weil die endgültige Version erst zu einem späteren Zeitpunkt vorliegt. Beim Austausch von Bauteilen können die Schweißpunktverbindungen soweit wie möglich wiederverwendet werden. Wo eine Wiederverwendung nicht möglich ist, wird der betreffende Schweißpunkt visuell hervorgehoben, so dass der Konstrukteur über die weitere Vorgehensweise entscheiden kann. Bauteile, deren Geometrie für die Berechnung unwesentlich ist, weil sie keine tragende Rolle spielen, können in einer symbolischen Form (als Glyph) visualisiert werden. Das Gewicht und die Trägheitseigenschaften dieser Bauteile werden im Rahmen des sogenannten Massentrimms auf umliegende Bauteile verteilt. Auch hierfür wurden im Rahmen dieser Arbeit Beiträge geleistet. Ebenfalls im Preprocessing-Bereich wurde das Erkennen, die Visualisierung und das Beseitigen von Perforationen sowie von Penetrationen realisiert. Um eventuelle Verzerrungen des FE-Netzes nach dem Beseitigen der Perforationen zu eliminieren wurde zudem ein Algorithmus zur Gitterrelaxation entwickelt. Im Laufe der Zeit wurde der Bedarf an einer größeren Vielfalt von Deformationsmöglichkeiten für Bauteile immer deutlicher. Die einfachste Vorgehensweise, die Neupositionierung einzelner Knoten, bietet zwar ein Maximum an Flexibilität. In vielen Fällen ist es jedoch sehr aufwendig, durch Neupositionierung einzelner Knoten die gewünschte Bauteil-Form zu erhalten. 1.4 Gliederung der Arbeit 19 In der Regel ist das gleichzeitige Verschieben mehrerer Netzknoten sinnvoll, wobei ein stetiger Übergang zur undeformierten Region wünschenswert ist. Dieser Anforderung wurde durch die Implementierung von sogenannter Direkter Manipulation von Frei-Form Deformationen (Direct Manipulation of Free-Form Deformation, DMFFD) entsprochen. Das Spline-basierte Verfahren wurde an die problemspezifischen Anforderungen angepasst. Gleichzeitig wurde die Performanz und Benutzerfreundlichkeit dieses Verfahrens gesteigert. Zur Benutzerfreundlichkeit trägt dabei auch eine Benutzerschnittstelle bei, welche einfach zu bedienen ist und gleichzeitig optimale Genauigkeit und Flexibilität bietet. Die Erhöhung der Benutzerfreundlichkeit ist auch Zweck der Integrationsumgebung CAE-Bench. Die Integrationsumgebung stellt eine Web-basierte Benutzerschnittstelle dar, mit deren Hilfe die verschiedenen an der Crash-Simulation beteiligten Programme koordiniert und gesteuert werden können. CAE-Bench reduziert den Einarbeitungsaufwand für die Bedienung der verschiedenen Programme und koordiniert den Datenaustausch zwischen diesen Programmen, was dem Benutzer viel Arbeit abnimmt. Für die Integration des Visualisierungstools wurde ein Java Applet entwickelt, welches in die CAE-Bench Web-Seite eingebettet ist, und so die Steuerung der Visualisierungapplikation basierend auf dem CORBA-Protokoll ermöglicht. Weiterhin wurde eine CORBASchnittstelle definiert und implementiert, welche das direkte Einlesen von Ergebnissen und sogar von Zwischenergebnissen aus dem FE-Simulationsprogramm ermöglicht. Diese Vorgehensweise ist schneller als der herkömmliche Weg über ein zentrales Dateisystem und ermöglicht es, den Benutzer von der Verwaltung der Ergebnisdateien zu befreien. Die Erkenntnisse aus der Integration des Visualisierungstools wurden in [23] veröffentlicht. In den Publikationen [25] und [26] wird u.a. die Flanscherkennung und das automatische Erzeugen von Schweißpunktlinien behandelt. In [26] wird außerdem die Erkennung, Visualisierung und Behebung von Bauteildurchdringungen beschrieben. In [71] geht es um die Visualisierung und Manipulation spezieller Elemente wie strukturlose Massen. Das Editieren von FE-Netzen durch DMFFD sowie die automatische Korrektur von Flanschen ist Thema von [24]. Im Rahmen der Forschungsarbeit wurden zwei Studienarbeiten betreut. Jenz Künzl behandelte die Visualisierung und Beseitigung initialer Durchdringungen bei FiniteElemente-Gittern. Thomas Piekarski beschäftigte sich mit der Anpassung des CrashViewers zur immersiven Visualisierung. 1.4 Gliederung der Arbeit Im ersten Kapitel erhält der Leser eine Einführung in die Thematik und das Umfeld dieser Arbeit. Außerdem wird hier ein Überblick über die Beiträge der Arbeit vermittelt. Das zweite Kapitel vermittelt grundlegende Informationen zum besseren Verständnis dieser Arbeit. Hier wird ein Einblick in die Arbeitsabläufe bei der Crash-Simulation 20 Einführung gewährt, angefangen von der Vorverarbeitung der Daten, über die eigentliche Simulation, bis hin zur Visualisierung und Auswertung des Simulationsergebnisses. Kapitel 3 stellt Verfahren zur rechnerunterstützten Beseitigung von Inkonsistenzen des Finite-Elemente-Modells vor, speziell Perforationen (Durchdringungen) und Penetrationen (Eindringungen) zwischen Bauteilen, sowie ein Verfahren zur anschließenden Relaxation (Entzerrung) des Finite-Elemente-Netzes. Die Beseitigung von Netzinkonsistenzen ist Voraussetzung für eine fehlerfreie Durchführung der Crash-Simulation. Kapitel 4 behandelt die automatische Erkennung von Bauteilflanschen. Der hier beschriebene Algorithmus dient als Grundlage für die Ergebnisse aus den folgenden beiden Kapiteln, sowie für verwandte Forschungsarbeiten. Thema von Kapitel 5 ist die automatische Platzierung von Schweißpunktlinien entlang von Flanschen. Die effiziente Definition von Verbindungselementen ist hilfreich, um bereits in der frühen Entwicklungsphase ein simulationsfähiges Fahrzeugmodell aufzubauen. In Kapitel 6 wird DMFFD, ein Spline-basiertes Verfahren zur Verformung beliebiger durch Polygone dargestellter Objekte, aufgegriffen und dessen Weiterentwicklung vorgestellt. Damit lassen sich kleine Veränderungen der Bauteilgeometrie in der FiniteElemente-Darstellung auf einfache und intuitive Weise durchführen. Basierend auf der Flansch-Erkennung wurde zudem ein Verfahren zur automatischen Anpassung von FlanschAbständen entwickelt, das auch zur Beseitigung von Perforationen angewendet werden kann. In Kapitel 7 geht es um den Massentrimm, ein Verfahren, bei dem nichttragende Teile auf ihre Trägheitseigenschaften reduziert werden, um Rechner-Resourcen zu sparen. Im Mittelpunkt steht dabei die aussagekräftige Visualisierung der strukturlosen Massen. Kapitel 8 handelt von der Einbettung der gesamten Anwendung in eine Web-basierte Integrationsplattform mit Hilfe eines Java-Applets und CORBA Middleware. Ziel hierbei ist eine bessere Führung des Benutzers durch den Arbeitsablauf der Crash-Simulation, sowie ein effizienterer Datenaustausch zwischen den beteiligten Anwendungen. Kapitel 9 liefert eine Gesamtbetrachtung der Arbeitsabläufe bei der Crash-Simulation, und zeigt die in dieser Arbeit entwickelten Algorithmen und Verfahren im Kontext dieser Prozeßkette. Kapitel 10 fasst schließlich die wichtigsten Ergebnisse zusammen und bietet einen Ausblick auf zukünftige Entwicklungen. Kapitel 2 Grundlagen 2.1 Arbeitsabläufe bei der Karosserie-Entwicklung Die zunehmende Komplexität und die steigenden Anforderungen bei neuen KraftfahrzeugModellen beschäftigen ein ganzes Heer von Entwicklungsingenieuren in der Automobilindustrie und deren Zulieferern. Dennoch ist eine ständige Weiterentwicklung und Optimierung des Entwicklungsprozesses unabdingbar, um im internationalen Wettbewerb bestehen zu können. Die Konkurrenz schläft nicht, und die Zeit bis zur Marktreife eines neuen Fahrzeugmodells kann entscheidend sein für dessen Erfolg. Eine Möglichkeit, die Effizienz der Entwicklung zu erhöhen, ist die Einführung der Simulationstechnik. Um die Verbesserungspotentiale dieser Technik auszuschöpfen, müssen die Arbeitsabläufe im Entwicklungsprozess dieser neuen Methodik optimal angepasst werden (siehe Abb. 2.1). Weitere Voraussetzungen sind eine optimale Datenverwaltung, sowie die Verfügbarkeit geeigneter Simulationsverfahren. Der Produktentwicklungsprozess besteht aus Sicht der Simulationstechnik aus 3 Phasen: • der Konzeptphase, • der Serienentwicklung und • der Fahrzeugerprobung. In der Konzeptphase können durch Einsatz der Simulation gravierende Fehler vermieden werden, die später kaum noch korrigiert werden können. Leider fehlen zu diesem Zeitpunkt oft noch viele erforderliche Fahrzeugdaten. Dr. D. Chang von General Motors erläuterte auf der PAM ’96 den Bedarf an frühzeitigen Simulationen wie folgt: An engineer making an analysis to check for a wrong design is like a doctor doing an autopsy. Korrekturen, die in einer späten Entwicklungsphase vorgenommen werden, beeinflussen einen Großteil der bis dahin entwickelten Komponenten, Spezifikationen und Prototypen 22 Grundlagen Visualisierung Visualisierung Akustik Wärmebilanz Festigkeit Fahrdynamik Umformen Festigkeit Dynamik Montagesim. Steifigkeit Crash Crash Komfort Visualisierung Visualisierung Umformsim. Aerodynamik Abtastdaten Strak Struktur Klimatisierung Kollisionen Ergonomie Simulationsergebnisse Simulationsmodelle Konstruktion Geometrie Design, Konzept Materialdaten Versuchsdaten Konstruktion Gesetze Lastkollektive Fahrzeugparameter Abnahmekriterien Virtueller Prototyp Abbildung 2.1: Zusammenwirken von Daten und Simulation [35] sowie der erbrachten Ingenieursleistungen. Die Kosten und der Zeitverlust, die damit verbunden sind, steigen überproportional zur vor der Korrektur bereits verstrichenen Zeit im Entwicklungsprozess. Aus diesem Grund ist es für ein Unternehmen sehr wichtig, so früh wie möglich über abgesicherte Entwicklungskonzepte zu verfügen. Im Verlauf der Serienentwicklung erfolgt, aufbauend auf den Ergebnissen der Konzeptphase und unter Einsatz geeigneter Simulationsverfahren, die Optimierung der geforderten Funktionalität. Wesentlich ist hier ein effektives Datenmanagement, das alle erforderlichen Daten für die unterschiedlichen Simulationsverfahren einheitlich bereitstellt. Bei günstigstem Verlauf sollte dann nur eine Testserie erforderlich sein. Während der Fahrzeugerprobung kann die Simulation unter der Voraussetzung, dass sie auch hier in die Abläufe optimal integriert ist, helfen, die Ursachen von festgestellten Mängeln schneller und besser zu ermitteln und gezielt Lösungswege zu finden. Dem Datenmanagement der benötigten Daten (Geometriedaten, Fahrzeugdaten, Technologiedaten und Simulationsdaten) kommt dabei die entscheidende Bedeutung zu, die jeweils benötigten Daten zum richtigen Zeitpunkt in der notwendigen Qualität verfügbar zu machen. Bestimmende Eigenschaften einer Automobilkarosserie sind die Form und die funktionellen Eigenschaften, wie Steifigkeit, Crash-Verhalten und die Akustik. Die Form eines Autos ist sehr wichtig für den kommerziellen Erfolg eines konkreten Entwurfs. Zum anderen werden die funktionalen Eigenschaften wie Gewicht (Kraftstoffverbrauch) und die Sicherheit der Passagiere immer bedeutender. Die Funktionalität einer Automobilkarosserie wird in der Regel anhand von Prototypen getestet. Die Verkürzung der Entwicklungszeiten zwingt alle Hersteller, mehr und mehr auf 2.1 Arbeitsabläufe bei der Karosserie-Entwicklung 23 rechnerbasierte Entwicklungen (virtual car) zu vertrauen. Entsprechende Schlüsselwörter sind: • CAS (computer aided styling) für die Entwicklung der äußeren Gestalt der Karosserie; • CAD (computer aided design) für die Konstruktion der Bauteile, ihren Zusammenbau und ihre Eigenschaften; • CAE (computer aided engineering) für die Entwicklung der funktionellen Eigenschaften der Karosserie. Numerische Simulation ist die wesentliche Technologie des CAE. • CAM (computer aided manufacturing) für den Herstellungsprozess; CAE, die rechnerbasierte Entwicklung der funktionalen Eigenschaften, basiert auf numerischer Simulation. Crash-Simulation, Strukturmechanik, Akustiksimulation und Strömungssimulation sind einige der Simulationsdisziplinen, die wichtig für die Entwicklung einer Automobilkarosserie sind. Abbildung 2.2 zeigt die Entwicklung der Crash-Simulation in der Automobilindustrie seit 1983, als die ersten numerischen Tests durchgeführt wurden. Heute ist Crash-Simulation eine etablierte Technologie mit guter Übereinstimmung zwischen Simulation und Experiment. Crash-Simulation wird nicht nur verwendet zur Analyse einzelner Probleme, die sich in Prototypencrashs gezeigt haben, sondern auch um das Crash-Verhalten eines neuen Modells vorherzusagen. Daher wird Crash-Simulation heute eingesetzt, um Karosserien mit verbesserten Eigenschaften in kürzerer Zeit zu entwickeln. Die weitaus meisten Versuche im Rahmen der passiven Sicherheit sind als Voraussetzung für eine Zulassung im Straßenverkehr international vereinbart und gesetzlich vorgeschrieben. Hinzu kommt, dass sich mit der experimentellen Simulation nicht selten unerwartete Schwachstellen aufdecken und nicht erfassbare Effekte überprüfen lassen. Nachteilig bei Abbildung 2.2: Entwicklung von Crash-Simulation in der Industrie nach [37] 24 Grundlagen realen Tests ist jedoch der Umstand, dass Testobjekte erst als Prototypen oder Muster vorliegen müssen, um experimentell überprüft werden zu können. Das bedeutet nicht nur hohe Erstellungskosten, sondern auch einen hohen Zeitaufwand, der mit den immer kürzer werdenden Entwicklungszeiten neuer Fahrzeugtypen und -plattformen unvereinbar ist. Daher entwickelte sich die rechnerische Simulation in den letzten zwei Jahrzehnten vom Nachrechen- und Überprüfungsinstrumentarium zum heute entscheidenden und anerkannten Auslegungswerkzeug in der Fahrzeugentwicklung, von der Konzeptphase bis hin zur Serienentwicklung, mit einem hohen Maß an Zuverlässigkeit und Simulationsgüte. Dies gilt auch und insbesondere für die rechnerische Simulation der Crash-Mechanik, die sich sowohl auf die statische und dynamische Berechnung der Fahrzeug-Deformationsstrukturen und der Komponenten des Insassenschutz-Systems, als auch auf die Simulation des Bewegungsund Belastungsverhaltens von Insassen, Fußgängern und Zweiradfahrern bezieht. Innerhalb der Crash-(Mechanik-)Simulation werden Rechenmodelle eingesetzt, die als Mehrkörper-Systeme (MKS) oder als Finite-Elemente-Methode (FEM) formuliert sind. Grundsätzlich lässt sich feststellen, dass zur Berechnung von Deformations- und Kontaktstrukturen und von Airbags Programme auf der Basis der Finite-Elemente-Methode angewandt werden, während zur Insassensimulation überwiegend Mehrkörper-Systeme ihre programmtechnische Anwendung finden [50]. Um numerische Simulation einzusetzen, muss eine ganze Prozesskette durchgeführt werden. Basierend auf dem CAD Modell mit einer Oberflächenspezifikation (durch rationale Splinefunktionen) für alle Bauteile der Karosserie muss ein numerisches Gitter für die gesamte Karosserie generiert werden. Dieser Vorgang heißt Vernetzung, das Ergebnis ist das Finite-Elemente-Netz. Anschließend werden die Materialeigenschaften für die einzelnen Bauteile spezifiziert und Komponenten, wie Barrieren, Dummies und Rückhaltesystem (Airbags, Sitzgurte, ...) hinzugefügt. Numerische Simulation wird für Front-, Rück- und Seitencrash durchgeführt. Abbildung 2.3: Die Prozesskette in der CAE-Simulation nach [86] 2.2 Preprocessing 25 Im Anschluss an die numerische Simulation werden Standardauswertungen durchgeführt und einzelne Details mit modernen Visualisierungsmethoden (z.B. VR-Visualisierung) im Detail analysiert (siehe Abbildung 2.3). 2.2 Preprocessing Unter Preprocessing versteht man das Vorbereiten eines FE-Modells für die Simulation, speziell für die Crash-Simulation. Dazu gehört z.B. die Approximation der CAD-Geometrie durch finite Elemente, und die Beseitigung eventueller Inkonsistenzen wie Penetrationen, Perforationen und Lücken im Finite-Elemente-Modell. Crash-Simulationen werden bereits frühzeitig parallel zur Karosserieentwicklung durchgeführt. Eine solche Vorgehensweise wird als Simultaneous Engineering [70] bezeichnet. Im frühen Entwicklungsstadium sind Korrekturen am Fahrzeug mit weniger Aufwand verbunden (Abb. 2.4). Weil dabei noch nicht alle Bauteildaten und Verbindungselemente zur Verfügung stehen ist es notwendig, einige Bauteile der vorherigen Fahrzeugversion an CAD-Entwurf Vernetzung (Meshing) Preprocessing, z.B.: Beseitigung von Inkonsistenzen Anpassen der Geometrie Ersetzen von Bauteilen Definition von Verbindungselementen Massentrimm Simulation (Finite Elemente Methode) Auswertung (Postprocessing) Echter Crash-Test an Prototypen Serienproduktion Abbildung 2.4: Position des Preprocessing im Simulationszyklus für den Karosserieentwurf. Durch die Möglichkeit der direkten Bearbeitung des Finite-Elemente-Modells hinsichtlich Crash-Simulation entfällt in vielen Fällen der Umweg über die CAD-Daten. 26 Grundlagen die Vorgaben der neuen Version anzupassen. Weiterhin müssen Verbindungselemente definiert werden, falls dies noch nicht durch die Konstruktionsabteilung durchgeführt wurde. Wurden vor einigen Jahren solche Modifikationen noch manuell, u.a. durch Editieren der Modell-Datei im ASCII-Format durchgeführt, so gibt es heute – auch durch die Beiträge der vorliegenden Arbeit – eine Reihe von Möglichkeiten, das Finite-Elemente-Modell als 3D-Darstellung interaktiv und automatisiert zu bearbeiten. 2.3 Finite-Elemente-Simulation Die in der vorliegenden Arbeit vorgestellten Entwicklungen werden derzeit in Verbindung mit Finite-Elemente-Modellen verwendet, auch wenn in einigen Fällen, z.B. bei der später vorgestellten Integrationsumgebung, eine Verallgemeinerung möglich ist. An dieser Stelle soll daher das Funktionsprinzip der Finite-Elemente-Methode schematisch erläutert werden, unter besonderer Berücksichtigung der aktuellen Entwicklungen in der Automobilindustrie. Für einen tieferen Einblick wird auf die Fachliteratur verwiesen [41, 75]. Die Methode der finiten (endlichen) Elemente ist ein rechnerorientiertes numerisches Verfahren, mit dem sich Dehnungen, Verformungen und mechanische Spannungen an komplexen, analytisch nicht geschlossen berechenbaren Bauteilen unter Belastung ermitteln lassen [50]. Dabei werden die Bauteile gedanklich durch ein idealisiertes Modell aus finiten Elementen ersetzt. In der Karosserieberechnung, bei der die meisten Baugruppen als membranartige Strukturen aufgefasst werden können, kommen hauptsächlich finite Elemente in Form von Schalen bzw. Platten (Shells und Tools) zum Einsatz. Diese 2D-mannigfaltigen Elemente sind aus numerischen Gründen größtenteils Vierecke, die durch gemeinsame Knoten verbunden sind. Ebenfalls aus numerischen Gründen sollten finite Elemente möglichst gleichseitig und gleichwinklig sein. Einige spezielle Bauteile werden durch 1D-mannigfaltige Elemente, also stabförmige Elemente (Beams) oder durch (3D-mannigfaltige) Volumenelemente abgebildet (Abbildung 2.5). Die Elemente sind durch eine Anzahl von Knoten und deren Positionen definiert. Bei sogenannten linearen Elementen bestimmen jeweils zwei Knoten eine geradlinige Kante. Einige Simulationscodes arbeiten zusätzlich mit Elementen höherer Ordung, bei der zusätzliche Knoten auf den Kanten und im Elementinneren möglich sind. Das elastische Verhalten der Elemente lässt sich über Gleichgewichtsaussagen aus dem Arbeitssatz mathematisch formulieren, indem das Produkt aus den äußeren Kräften an den Rändern eines Elements und den äußeren Verschiebungen der Kraftangriffspunkte gleichgesetzt wird mit dem Produkt aus der verallgemeinerten inneren Kräftegruppe und der inneren Verformung. Die Deformation im Bauteil ist über Materialgesetze in der Steifigkeitsmatrix der Elemente mit der berechneten Spannung verknüpft. 2.3 Finite-Elemente-Simulation Balkenelement (Beam) 27 Schalenelemente (Shells) Volumenelemente (Solids) Abbildung 2.5: Typen von finiten Elementen bei der Crash-Simulation. Die Vorgehensweise bei der FEM-Berechnung ist zunächst durch die Zerlegung komplizierter Strukturen in geometrisch einfache Elemente und die Festlegung der Knotenkoordinaten (Netz-Generierung) gekennzeichnet. Danach wird ein Verschiebungsansatz vorgegeben, der das Elementverformungsverhalten aus den unbekannten Knotenverschiebungen mathematisch darstellt. Die Gleichgewichtsbedingungen an den Elementknoten führen zu einem Gleichungssystem, aus dessen Lösung sich die Knotenverschiebungen bestimmen lassen. Daraus können schließlich die Dehnungen und mit Hilfe der Materialeigenschaften in der Steifigkeitsmatrix die Spannungen im Bauteil ermittelt werden. Damit wird eine Berechnung komplizierter Strukturen ermöglicht, die allerdings nur eine Näherung hinsichtlich des Verhaltens des realen Bauteils darstellt. Der klassischen Elastomechanik liegen zwei Linearisierungsbedingungen zugrunde. Zum einen die sich infolge der Beanspruchung einstellenden, kleinen Verformungen, so dass Verformungen höherer Ordnung vernachlässigt werden können (geometrische Linearisierung). Zum anderen wird ein linearer Zusammenhang zwischen Spannung und Dehnung, ausgedrückt durch das Hook’sche Gesetz, unterstellt (physikalische Linearisierung). Bei der unfall- oder versuchsbedingten Verformung von Deformationsstrukturen treten aber sowohl Verformungen im nichtlinearen Bereich als auch, wegen der plastischen Verformungen, nichtlineare Spannungs/Dehnungs-Zusammenhänge auf. Um derartige Nichtlinearitäten zu berücksichtigen, werden nach den einzelnen, linear durchgeführten Rechen- 28 Grundlagen schritten Korrekturberechnungen durchgeführt. Die Berechnung wird also abschnittsweise linear vorgenommen, wobei nach jedem Deformationsschritt eine neue Steifigkeitsmatrix aufgestellt werden muss. Da diese Vorgehensweise mit einem relativ hohen Rechenaufwand verbunden ist, konnte sich die FEM-Berechnung erst relativ spät mit der Einführung leistungsfähiger Computer und entsprechender Software durchsetzen. Die ursprünglich Ende der siebziger Jahre für den Flugzeugbau entwickelte Finite-Elemente-Methode wird heute im gesamten ingenieurtechnischen Bereich angewandt. Verbindungen zwischen verschiedenen Bauteilen wurden im Finite-Elemente-Modell durch Netzknoten modelliert, welche allen an dieser Stelle miteinander verbundenen Bauteilen zugeordnet sind. Diese Vorgehensweise hatte zwei entscheidende Nachteile. Wurde ein Bauteil verändert, musste im Prinzip das gesamte Modell neu vernetzt werden. Darüberhinaus war der Prozess der Gittergenerierung zu komplex für automatische Tools, insbesondere wenn es um die Platzierung der bauteilverbindenden Knoten geht. Eine manuelle Vorbereitung und Nachbearbeitung war daher in der Regel notwendig. Eine unabhängige Vernetzung der einzelnen Bauteile ist daher vorzuziehen. Das unabhängige Vernetzen der Bauteile erlaubt dann auch, für die Untersuchung von Konstruktionsvarianten Bauteile schnell auszutauschen, ohne die Netzübergänge in aufwändiger Handarbeit an vorhandene Strukturen anpassen zu müssen. Ein Ziel des BMBF Projektes Autobench (1998 - 2001) war es, die beteiligten Tools auf den Umgang mit unabhängig vernetzten Bauteilen vorzubereiten. Die nun inkompatiblen Bauteilgitter machen die Verwendung von speziellen Verbindungselementen notwendig. Solche Verbindungselemente können punktförmig, linienförmig oder flächig sein. Die Verbindungselemente spiegeln die Realität wider. So sind punktförmige Verbindungen meist Schweißpunkte, Nieten oder Schrauben. Linienförmige Verbindungen sind in der Regel Schweißlinien, während flächige Verbindungen meist durch Verklebung realisiert werden. Neben den Simulationstools müssen auch die Visualisierungstools und Gittereditoren an die inkompatiblen Gitter und die Verbindungselemente angepasst werden. Diese Anpassungen werden später im Detail behandelt. 2.4 Grundlagen der Visualisierung Ein Bild sagt mehr als tausend Worte, sagt ein Sprichwort. Tatsächlich nimmt der Mensch rund 80% der Informationen mit den Augen auf. Der Sehsinn eignet sich daher am besten, um komplexe Sachverhalte wahrzunehmen. Ziel der Visualisierung ist es, Informationen so aufzubereiten, dass sie schnell und korrekt visuell wahrgenommen werden. Da die wissenschaftliche Visualisierung auch bei der vorliegenden Arbeit eine Rolle spielt, speziell die Visualisierung von Finite-Elemente-Modellen, soll hier ein kurzer Ein- 2.4 Grundlagen der Visualisierung 29 blick in dieses wichtige Forschungsgebiet gegeben werden. Für umfangreichere Informationen sei der interessierte Leser auf die vielfältige Fachliteratur zu diesem Thema verwiesen, z.B. [8, 72, 61, 5]. Bekannte Arten von Visualisierungen sind z.B. Landkarten, Diagramme, Skizzen, medizinische Röntgenbilder oder die in der Einleitung erwähnten Wetterkarten. In Wissenschaft und Technik spielt die Visualisierung eine wichtige Rolle, etwa bei der Auswertung von statistischen Erhebungen und Simulationen. Abbildung 2.6: Der Simulations- und Visualisierungszyklus Bei Simulationen werden in der Regel physikalische Phänomene auf physikalische Modelle abgebildet, die dann als mathematische Problemstellung formuliert werden und mit numerischen Verfahren gelöst werden. Das Ergebnis der numerischen Berechnung stellt den Input für die Visualisierung dar (Abbildung 2.6). Aufgrund der hohen Verarbeitungsgeschwindigkeit moderner Rechenanlagen handelt es sich dabei meist um große Datenmengen. Ohne eine Visualisierung der Berechnungsergebnisse wäre es schwierig bis unmöglich, Erkenntnisse aus der Berechnung zu erhalten. Hamming formulierte diese Tatsache im Jahr 1962 folgendermaßen: The purpose of computing is insight, not numbers. Bevor die eigentliche Visualisierung stattfindet, werden in der Regel die Daten gefiltert. Dabei werden die uninteressanten und die redundanten Daten- und Wertebereiche entfernt. Damit reduziert sich die Information, die durch den Rechner weiterverarbeitet und schließlich durch den Betrachter wahrgenommen werden muss auf das tatsächlich benötigte Maß. Anschließend werden diese Daten auf Geometrieelemente, wie z.B. Linien, Flächen, Farben abgebildet. Dabei ist es oft hilfreich, wenn die geometrische Darstellung einen Bezug zur Realität hat, der Betrachter also Bezugspunkte und gewohnte Elemente wiederfindet. Eine naturgetreue (“photographische”) Wiedergabe ist dabei nicht notwendig, vielmehr sollen aus der Geometrie Rückschlüsse auf die zugrundeliegenden Daten und auf mögliche Zusammenhänge gezogen werden. Für die Darstellung der Geometrie sind daher einfache Renderingverfahren ausreichend, da hierbei mehr Wert auf Interaktivität als auf Photorealismus gelegt wird. 30 Grundlagen Abhängig von der Art der Daten, gegeben durch Dimension des Datenbereiches und der einzelnen Werte gibt es verschiedene Visualisierungsverfahren. Ein häufiger Fall ist z.B. die Simulation und Visualisierung von Stömungen. Hierbei handelt es sich in der Regel um dreidimensionale Datenbereiche, wobei die Daten selbst als dreidimensionale Vektoren die Richtung und Geschwindigkeit der Strömung an je einem Punkt des Raumes angeben. Die Datenpunkte können hierbei entweder gleichmäßig auf einem kartesischen Gitter, nach verschiedenen Kriterien strukturiert, oder auch unstrukturiert angeordnet sein. Grundsätzlich um uniforme Gitter handelt es sich bei Volumendatensätzen wie sie z.B. in der Medizin durch tomographische Verfahren entstehen. Die Daten selbst sind hierbei skalare Werte. Sie sind abhängig von den Materialeigenschaften an der jeweiligen Position und lassen so z.B. Rückschlüsse auf die Art des Gewebes zu. Aufgrund deren vielfältigen Anwendungsmöglichkeiten gibt es heute eine Vielfalt von effizienten und qualitativ hochwertigen Verfahren sowohl für die Strömungsvisualisierung, z.B. Particle Tracing und Line Integral Convolution, als auch für die Volumenvisualisierung. Bei der in der vorliegenden Arbeit behandelten Visualisierung von Finite-ElementeModellen handelt es sich um einen dreidimensionalen Datenbereich. Darin werden zum einen die finiten Elemente selbst, basierend auf den Koordinaten der Elementknoten und auf der Topologieinformation, dargestellt. Zum anderen werden zusätzlich Knoten-, Element- und Bauteil-bezogene Daten dargestellt. So wird ein jedes Bauteil unterschiedlich eingefärbt, um die Bauteile besser voneinander unterscheiden zu können. Je nach Anwendung werden weitere Daten farblich oder als zusätzliche dreidimensionale Geometrie visualisiert. Bei der Auswertung einer Visualisierung durch den Betrachter gibt es in Hinblick auf die Interaktivität mehrere Möglichkeiten: • Keine Interaktion (Movie Mode): Simulation und Visualisierung laufen auf zuvor definierte Weise ohne Benutzereingriff ab. Der Betrachter sieht sich die resultierenden Bilder oder Videos an. • Interaktives Postprozessing: Die Simulation läuft ohne Interaktion ab, das Ergebnis wird jedoch interaktiv visualisiert. Dabei können z.B. Blickwinkel oder Visualisierungsparameter interaktiv verändert werden. • Simulationsüberwachung (Tracking): Der Benutzer greift in die laufende Simulation ein, etwa indem er Parameter verändert. In die Visualisierung wird jedoch nicht eingegriffen. • Interactive Steering: Der Benutzer nimmt sowohl Einfluss auf die Simulation als auch auf die Visualisierung. Dieses Szenario spielt auch in der vorliegenden Arbeit eine Rolle, wobei in Kapitel 8 näher darauf eingegangen wird. 2.5 Grundlagen der Computergraphik 2.5 2.5.1 31 Grundlagen der Computergraphik Die Graphik-Pipeline Auch wenn einfache Visualisierungen, wie Diagramme, Karten, Skizzen, von Hand dargestellt werden können, so ist bei der wissenschaftlichen Visualisierung die Unterstützung durch die Computergraphik sehr hilfreich und meist unumgänglich. Daher soll an dieser Stelle kurz erläutert werden, wie aus (dreidimensionalen) Geometriedaten (zweidimensionale) Bilder am Bildschirm entstehen. Die einfachsten Strukturen der Computergraphik sind Linien und Dreiecke, gegeben durch deren End- bzw. Eckpunkte (Vertizes). Alle anderen Objekte, wie Polygone und Kurven, können daraus zusammengesetzt bzw. approximiert werden. Um einen dreidimensionalen Körper darzustellen, ist es ausreichend, seine Oberfläche zu modellieren - es sei denn, sein innerer Aufbau ist von besonderem Interesse. Abbildung 2.7: Die Graphik-Pipeline Bei der Darstellung (Rendering) einer Szene werden sequentiell mehrere Operationen durchgeführt. Diese Sequenz wird durch die Graphik-Pipeline, auch bekannt als RenderingPipeline, realisiert (Abb. 2.7). Sämtliche Objekte, welche in der Szene dargestellt werden sollen, werden zuerst aus dem lokalen Objektkoordinatensystem, in ein einheitliches Weltkoordinatensystem transformiert. In der Regel werden für diese Modellierungstransformation Translationen und Rotationen angewendet, welche jedes Objekt an die gewünschte Position bringen. Der von OpenGL und anderen Systemen bereitgestellte Matrix Stack unterstützt dabei die Modellierung und die effiziente Darstellung hierarchisch aufgebauter Szenen. Um Translationen ebenso wie andere Transformationen durch Multiplikation mit einer Matrix darstellen zu können, werden die dreidimensionalen Objektkoordinaten (x, y, z) um 32 Grundlagen eine vierte Dimension w = 1 zu homogenen Koordinaten erweitert. Der Wert w wird nur durch nicht-affine Transformationen wie der perspektivischen Transformation verändert. Nach der Modellierungstransformation wird mit Hilfe der Viewing Transformation, welche die aktuelle Position des Betrachtes bzw. der Kamera berücksichtigt, die Szene in das Betrachterkoordinatensystem (Viewing Koordinaten) transformiert. In diesem System befindet sich das Auge bzw. die Kamera im Ursprung, die Blickrichtung stimmt mit der z-Achse überein. An diesem Punkt der Graphik-Pipeline befindet sich der sichtbare Teil der Szene im Inneren eines Pyramidenstumpfes, dem Viewing Frustum. Aus numerischen Gründen ist dieses Vomumen nach vorne und nach hinten begrenzt durch zwei Ebenen, die Far Clipping Plane und die Near Clipping Plane. Die nächste Stufe der Pipeline, die perspektivische Transformation, transformiert das Viewing Frustum in den Einheitswürfel. Zuvor muss jedoch die Beleuchtung für jeden Vertex oder für jedes Dreieck berechnet werden. Nach der nicht-affinen perspektivischen Transformation sind Winkel verändert und die Beleuchtungsberechnung damit nicht mehr möglich. Nach der perspektivischen Transformation werden außerdem die Koordinaten durch Division mit w homogenisiert. Nachdem nun der sichtbare Teil der Szene durch einen Einheitswürfel begrenzt ist, kann an dieser Stelle recht einfach die unsichtbare Geometrie eliminiert werden. Damit erspart man sich weitere Operationen auf dieser Geometrie, die für das endgültige Bild irrelevant ist. Doch bereits in Weltkoordinaten können Objekte, die vollständig außerhalb des Viewing Frustums liegen, weggelassen werden. Aus der dreidimensionalen Szene entsteht nun durch Ignorieren der z-Koordinate eine 2D-Abbildung. Dies entspricht einer orthogonalen Parallelprojektion. Die 2D-Abbildung wird in Gerätekoordinaten transformiert, so dass sie den zur Verfügung stehenden Bildschirm (Viewport) ausfüllt. Die z-Koordinate wird allerdings nicht verworfen, sondern für die Verdeckungsberechnung im Rahmen der Rasterisierung verwendet. Bei der Rasterisierung werden schließlich aus Dreiecken und Linien Bildpunkte (Pixel), welche aufgrund der Architektur heutiger Displays in einem Raster angeordnet sind. Mit Hilfe des z-Buffers wird hierbei für jeden Pixel Tiefeninformation mitgespeichert. Pixel von verdeckten Objekten werden so gar nicht erst gesetzt. Durch die Pipeline-Archiektur wird eine Parallelisierung des Renderings erleichtert. Die Vertizes stellen einen Datenstrom dar, der durch die Pipeline fließt. Die verschiedenen Abschnitte der Pipeline sind dabei möglichst gleichmäßig ausgelastet. Moderne Hardware bietet zusätzlich zu der Graphik Pipeline die Möglichkeit, die Transformation der Vertixes und die Schattierung der Pixel durch den Anwendungsentwickler selbst zu programmieren. Die sogenannten Vertex Programme, untreffend auch Vertex Shader genannt, ermöglichen die Implementierung einer Vielfalt an neuen Spezialeffekten in Echtzeit, so z.B. die Animation einer Wasseroberfläche, Bewegungsunschärfe und viele 2.5 Grundlagen der Computergraphik 33 mehr. Allerdings ist es nicht möglich, mit Vertex Programmen Vertices zu entfernen oder hinzuzufügen, allein die Vertex-Koordinaten können berechnet werden. Die freie Programmierung der Pixeleinfärbung durch Pixel Shader ermöglicht die Implementierung spezieller Beleuchtungsschemata und Texturierungen, sowie weitere Spezialanwendungen. Bei Vertex Programmen und Pixel Shadern gibt es derzeit noch bedeutende Einschränkungen, z.B. hinsichtlich Programmlänge, Verzweigungen und der assemblerähnlichen Syntax, doch bieten sie ein großes Maß an zusätzlicher Flexibilität und erschließen völlig neue Anwendungsfelder für die Graphikhardware. 2.5.2 Beleuchtung Die Beleuchtung spielt eine bedeutende Rolle in der Computergraphik. Sie steigert den Realismus der Szene und trägt wesentlich zur Vermittlung des dreidimensionalen Eindrucks bei (Abb. 2.8). Abbildung 2.8: Darstellung einer Kugel, links mit und rechts ohne Beleuchtungseffekte. Eine möglichst realitätsnahe Beleuchtung basiert auf einem globalen Beleuchtungsmodell, bei dem Reflexion und andere Effekte zwischen Objekten berücksichtigt werden. Ein solches Modell erfordert viel Rechenaufwand und ist daher für interaktive Anwendungen auf heutiger Hardware nur beschränkt geeignet. Für interaktive Anwendungen – und nur um solche handelt es sich in der vorliegenden Arbeit – ist ein lokales Beleuchtungsmodell vorzuziehen. Bei einem solchen Modell wird nur das Licht einer oder mehrerer Lichtquellen berücksichtigt, nicht jedoch die Lichtstrahlung anderer beleuchteter Objekte. Bei Bedarf könnten noch zusätzliche Beleuchtungseffekte angewendet werden, wie z.B. Shadow Maps zur Darstellung von Schatten. Für die Berechnung der Beleuchtung auf einem Punkt der Objektoberfläche gibt es verschiedenen Ansätze, von denen das Phong-Modell [10] am weitesten verbreitet ist. Ver- 34 Grundlagen ~ Richtung des Abbildung 2.9: Richtungen und Winkel bei der Beleuchtungsberechnung. L: ~ ~ ~ ~ . V~ : zeigt einfallenden Lichts. N : Oberflächennormale. R: Spiegelbild von L bezüglich N zum Betrachter. einfacht ausgedrückt, addiert Phong den Einfluß einer ambienten Beleuchtung, welche aus allen Richtungen gleichmäßig strahlt, zu dem richtungsabhängigen Einfluß einer diffusen und einer spekularen Komponente. Die Abhängigkeit von der Richtung der Lichteinstrahlung wird durch eine Multiplikation der diffusen Lichtintensität mit cos θ, dem Winkel zwischen Lichteinstrahlung und Oberflächennormale, berücksichtigt. Die spekulare Komponente wiederum sorgt für Glanzlichter auf der Oberfläche. Dabei spielen die Oberflächeneigenschaften und cosn α, der Winkel zwischen Blickrichtung und gespiegelter Lichtrichtung eine Rolle (Abb. 2.9). Je größer der Wert n ist, umso kleiner und schärfer ist das Glanzlicht. Bei der Darstellung eines Objekts wird die Beleuchtung nur an einer begrenzten Zahl von Punkten der Oberfläche berechnet. Zur Schattierung (Shading) der gesamten Oberfläche sind die folgenden drei Vorgehensweisen gebräuchlich: • Flat Shading: Die gesamte Fläche eines Dreiecks erhält eine einheitliche Schattierung. Die dazu benötigte Flächennormale lässt sich eindeutig bestimmen. Die Kanten der Dreiecke sind bei Flat Shading deutlich zu erkennen. Gekrümmte, glatte Oberflächen wirken somit kantig. • Gouraud Shading: Die Beleuchtung wird für die Netzknoten (Vertizes) berechnet, und die Schattierung im Inneren jedes Dreiecks wird durch Interpolation der Farbwerte an dessen Ecken bestimmt. Je nachdem, ob an den gemeinsamen Vertizes benachbarter Dreiecke eine gemeinsame Normale oder für jedes Dreieck eine eigene Normale gegeben ist, resultiert ein weicher Schattierungsverlauf oder eine scharfe Objektkante an der Grenze der Dreiecke. Gouraud Shading wird von der aktuellen Hardware unterstützt und ist derzeit – trotz einer gewissen Ungenauigkeit – das meistverbreitete Schattierungsverfahren. • Phong Shading: Für jeden Bildpunkt des gerasterten Objekts wird durch Interpolation die Normale bestimmt und damit die Beleuchtung berechnet. Dieses Verfahren ist genauer als Gouraud Shading und hier ist z.B. gewährleistet, dass eventuelle Glanzlichter auch innerhalb eines Dreiecks dargestellt werden. Da Phong Shading sehr 2.5 Grundlagen der Computergraphik 35 Abbildung 2.10: Flat Shading, Gouraud Shading und Phong Shading am Beispiel zweier Dreiecke. rechenintensiv ist und von der Hardware nicht unterstützt wird, ist dieses Verfahren weniger verbreitet. Abbildung 2.10 zeigt die Auswirkung dieser drei Schattierungsverfahren für zwei benachbarte Dreiecke. 2.5.3 Texturen Erstmals von Catmull [11] im Jahr 1974 erwähnt, sind Texturen heute in der Computergraphik ein weitverbreitetes Mittel zur Darstellung von Oberflächenstrukturen. Die heute übliche Hardwareunterstützung ermöglicht die Verwendung von Texturen fast ohne Geschwindigkeitseinbußen, da dieser Vorgang parallel im Rahmen der Rasterisierung abläuft. Texturen können verwendet werden, um Oberflächendetails darzustellen, die sonst nur mit viel zusätzlicher Geometrie und zusätzlichem Modellierungsaufwand, also mit Performanz-Einbußen erreicht werden können. Eine Textur ist eine ein-, zwei-, oder dreidimensionale Tabelle von Farb-, Transparenz- und/oder Luminanzwerten. Als zweidimensionale Textur kann eine normale Pixelmap verwendet werden, um ein Bild oder ein sich wiederholendes Muster aufzutragen. Eindimensionale Texturen können z.B. eine Farbtabelle enthalten, während dreidimensionale Texturen für die Volumenvisualisierung gut geeignet sind. Durch Multi-Texturing können mehrere Texturen in einem Durchgang logisch verknüpft und auf der Oberfläche dargestellt werden. Vor einigen Jahren noch ein Merkmal von High-End-Graphikhardware, werden 3D- und Multi-Texturen heute durch gängige PC-Karten unterstützt. Um Texturen auf einer Oberfläche darzustellen, werden den Vertizes der Oberfläche Texturkoordinaten zugeordnet. Bei der Rasterisierung der Flächen werden dann durch Interpolation für jeden Pixel die entsprechenden Farb- und Transparenzwerte aus der Textur 36 Grundlagen Abbildung 2.11: Anwendung einer 2D-Textur (links) auf eine Kugel. übernommen. In Abbildung 2.11 ist ein Beispiel für die Anwendung einer zweidimensionalen Textur zu sehen. 2.6 Visualisierung von Finite-Elemente-Modellen Finite Elemente können relativ einfach auf die Grundelemente der Computergraphik, nämlich Punkte (Vertizes), Linien und Dreiecke abgebildet werden. Anders als Kurven und gekrümmte Flächen aus der CAD-Welt benötigen finite Elemente keine Tesselierung, also keine Approximation von Kurven/Flächen durch stückweise lineare Geometrie, da dies bereits beim Erzeugen des FE-Gitters geschehen ist. Dennoch bedarf es bei der Visualisierung von Finite-Elemente-Modellen einer wohlüberlegten Vorgehensweise, einerseits um die recht großen Datenmengen interaktiv zu visualisieren, andererseits um den speziellen Eigenschaften der finiten Elemente Rechnung zu tragen [51]. Auch wenn jedes Polygon aus Dreiecken besteht, sollen die größtenteils viereckigen finiten Elemente ihre Eigenschaft als Vierecke auch in der internen Datenrepräsentation bewahren, schon allein um die Visualisierung des FE-Netzes zu ermöglichen. 2.6.1 Verwendete Werkzeuge Als Basis für die 3D-Darstellung der Daten wurde die OpenGL [93] Graphikbibliothek gewählt. OpenGL ist, zum Unterschied von anderen Graphik-APIs, auf allen gängigen Plattformen verfügbar und wird von der heutigen Graphikhardware weitgehend unterstützt. Ersteres ist entscheidend für die Portierbarkeit der darauf aufbauenden Software, letzteres ist wichtig für eine optimale Performanz. Durch Hardware-Unterstützung kann die Visualisierung um Größenordnungen schneller dargestellt werden, als bei reinen Software-Lösungen. Insbesondere wegen der großen Datenmengen und der Forderung von Interaktivität ist eine effiziente Nutzung der Graphik-Hardware unabdingbar. 2.6 Visualisierung von Finite-Elemente-Modellen 37 Für die Entwicklung größerer Software-Projekte ist eine modulare Vorgehensweise nötig, damit der Programmcode nicht unüberschaubar wird. Objektorientierte Sprachen unterstützen einen modularen Programmaufbau, durch die Bereitstellung von Objekten und deren Instanzen, durch Abstraktion von der Implementierung und durch Datenkapselung. Durch Vererbung von Objekten lassen sich zudem leicht Erweiterungen durchführen. Andererseits haben objektorientierte Sprachen einen gewissen Overhead, wodurch die Ausführung des Programms unter Umständen etwas verzögert wird. Die im Rahmen der vorliegenden Arbeit entwickelten Visualisierungstools wurden mit Hilfe der Programmiersprache C++ implementiert. C++ [84] ist eine objektorientierte Erweiterung der Sprache C [42], einer Sprache die schon in den 70er Jahren für die Programmierung des Betriebssystems Unix entwickelt wurde. Die objektorientierte Erweiterung C++ ermöglicht gleichzeitig übersichtlichen und effizienten Programmcode. Da das Graphik-API OpenGL nicht objektorientiert arbeitet, wurde eine objektorientierte Erweiterung in Form eines Szenengraph-API’s verwendet. Ein Szenengraph ist eine Datenstruktur, mit deren Hilfe sich die Objekte, die dargestellt (gerendert) werden sollen, in einer Baumstruktur organisieren lassen. Bei der Traversierung des Szenengraphen werden dann für jeden Knoten dieser Baumstruktur entspechende OpenGL-Funktionen aufgerufen, welche die gewünschte dreidimensionale Darstellung der Szene veranlassen. Prinzipiell wäre es zwar möglich und in einigen Fällen sogar effizienter, die OpenGLFunktionen auch ohne Szenengraph direkt aufzurufen. Doch bei komplexen Szenen wird diese Vorgehensweise schnell unübersichtlich, was schließlich auch negative Auswirkungen auf die Effizienz und die Wartbarkeit des Programmcodes haben kann. Die Wahl des Szenengraph-API fällt nicht leicht. Eine Reihe von proprietären Szenengraph-Varianten ist auf dem Markt erhältlich, wobei jede Variante Vor- und Nachteile hat. OpenInventor [90] z.B. bietet viele Features wie Manipulatoren und TiefenSortierung von transparenten Objekten, ist jedoch bei größeren Szenen nicht hinreichend schnell. Performer [79] wiederum ist für große Datensätze ausgelegt, bietet aber wenig Funktionalität. Die Wahl fiel schließlich auf Cosmo3D [80], das in Verbindung mit dem Aufsatz OpenGL Optimizer [81] eine Optimierung der Darstellungsgeschwindigkeit zusammen mit einer Reihe von nützlichen Szenengraph-Objekten und Features bietet. In letzter Zeit wird außerdem an Open-Source-Szenengraphen entwickelt, wie OpenSG und OpenScenegraph. Da die Entwicklung der proprietären Szenengraphen in letzter Zeit sehr langsam voranschreitet oder stagniert und wegen deren Einschränkung auf wenige Plattformen, wurde bei der vorliegenden Arbeit durch eine SzenengraphAbstraktionsschicht der möglichst einfache Austausch des zugrundeliegenden Szenengraphen ermöglicht. So kann, sobald eine geeignetere Szenengraph-Variante einsatzbereit ist, ein Umstieg erfolgen. 38 2.6.2 Grundlagen Beschleunigung des Bildaufbaus Aufgrund der großen Datenmengen, die zu visualisieren sind, ist eine effiziente Struktur des Szenengraphen besonders wichtig. Zum einen gilt es festzustellen, welche Teile der Szene durch andere verdeckt oder außerhalb des Darstellungsbereiches sind. Solche unsichtbaren Objekte können mit Unterstützung des OpenGL Optimizer entdeckt und bei der Darstellung der Szene weggelassen werden, ein Vorgang, der als Culling bezeichnet wird. Weiterhin macht es Sinn, identische Daten zusammenzufassen. Durch die Möglichkeit, Objekte (Knoten) im Szenengraph mehrfach zu referenzieren, kann viel Arbeitsspeicher eingespart werden. Dieses Vorgehen ist insbesondere bei Post-Processing Daten interessant, wo für alle Zeitschritte die Netztopologie gleich bleibt, während die Koordinaten der Knoten von Zeitschritt zu Zeitschritt variieren. Da im Durchschnitt jeweils vier finite Elemente einen Gitterknoten gemeinsam haben, ist es sinnvoll, wenn jedes Element nur einen Verweis auf dessen Knoten bzw. dessen Koordinaten enthält und nicht eine Kopie derselben [53, 82]. Beim Rendering wird normalerweise jedoch jedes Element einzeln bearbeitet, d.h. insbesondere, dass alle Knoten des Elements zu transformieren sind, also deren Position am Bildschirm berechnet werden muss, auch wenn das eigentlich schon beim Rendern eines Nachbarelements geschehen ist. Eine Möglichkeit der Optimierung besteht darin, viereckige Elemente zu Streifen zusammenzufassen, den sogenannten Quadstrips. Wenn vorher für n Elemente 4n Knoten transformiert wurden, so sind es nun nur noch 2n + 2. Allerdings benötigt das Finden von Viereck-Streifen einige Zeit. Mit OpenGL ist eine effiziente Verwendung von Quadstrips gewährleistet, für die darüberliegende Cosmo3D-Schnittstelle mußte jedoch eine eigene Erweiterung realisiert werden. Seit OpenGL Version 1.2 gibt es sogenannte Vertex Arrays, die es ermöglichen, Listen von Knoten, bei Bedarf auch Listen von Normalen, Texturkoordinaten oder Farbwerten und dazu eine Liste von Knotenindizes anzugeben. Die Knoten können dann über diese Indizes angesprochen werden, und brauchen nicht mehrmals transformiert werden. Bei einer SGI Octane2 mit V8 Graphik-Board wurde so eine Steigerung der Framerate um 100% erreicht. Je nach verwendeter Hardware kann die Beschleunigung unterschiedlich groß sein oder auch gar nicht auftreten, z.B. wenn Vertex-Transformationen nicht den Flaschenhals in der Rendering-Pipeline [21] darstellen. Die Cosmo3D Klasse csQuadSet wurde in der vorliegenden Arbeit abgeleitet und einige Methoden durch eigene ersetzt, um die Verwendung von Vertex Arrays durch Cosmo3D zu gewährleisten. Ab der seit kurzem verfügbaren Version 1.3 ist die Verwendung von Vertex Arrays durchgehend in Cosmo3D implementiert. Während der Verwendung von Texturen werden in den hier beschriebenen Visualisierungstools derzeit jedoch keine Vertex Arrays verwendet, weil den Texturkoordinaten andere Listen von Indizes zugeordnet sind, als den Knoten und den Normalen. Zumindest im Falle der Visualisierung von Preprocessing-Daten ließe sich allerdings das Index-Set vereinheitlichen. 2.6 Visualisierung von Finite-Elemente-Modellen 39 Eine weitere Möglichkeit, den Bildaufbau bei großen Datensätzen zu beschleunigen, ist die Simplifizierung (Vereinfachung) der Geometrie. Bei diesem Verfahren wird die komplexe darzustellende Geometrie, bestehend aus einer großen Anzahl von Dreiecken bzw. Knoten, durch eine andere, einfachere Geometrie ersetzt, welche die erstere möglichst gut approximiert. Da das simplifizierte Modell auch weniger Information enthält wie das Original, sollte der Grad der Simplifizierung nur so groß sein, dass eine interaktive Darstellung, z.B. mit 10 Bildern pro Sekunde möglich ist. Weiterhin sollte die vereinfachte Geometrie nur während der Benutzerinteraktion verwendet werden. Sobald keine Aktualisierung des Ausgabebereiches (rendering area) ansteht, kann die Originalgeometrie dargestellt werden. Der Vorgang der Simplifizierung benötigt jedoch auch Zeit. Diese Zeit kann bei großen Modellen – und nur hier ist eine Simplifizierung sinnvoll – im Minutenbereich liegen. Daher lohnt der Aufwand im Allgemeinen nur, wenn eine länger dauernde Interaktion bevorsteht. Außerdem ist eine Visualisierung der Gitterstruktur oder anderer Knoten- oder Elementgebundenen Information nicht oder nur sehr umständlich auf dem simplifizierten Modell zu erreichen. 2.6.3 Wiederverwertung von Bildspeicherinhalten Ohne lange Vorbereitungszeit kommen Verfahren aus, die pixelbasiert arbeiten. Ihr Anwendungsbreich ist jedoch begrenzt. So kann bei der Manipulation eines Teils der Szene, etwa eines einzelnen Bauteils, unter Umständen auf die laufende Aktualisierung der gesamten Szene verzichtet werden. Der unmodifizierte Teil der Szene kann einmal gerendert und als Pixel-Bild plus Tiefen-Puffer (Z-Buffer) in den Hauptspeicher kopiert werden. Während der Interaktion wird dann laufend der Bildschirminhalt aus dem Speicher aufgefrischt, und nur der sich verändernde Teil der Szene, z.B. das eine Bauteil, muss tatsächlich neu gerendert werden. Bei einigen Graphik Architekturen ist der Datenpfad zu langsam, der für das Wiederbeschreiben des Z-Buffers benötigt wird, weshalb sich dieses Verfahren hier nicht lohnt. So sind unter den SGI-Architekturen nur die Varianten IMPACT und IR (InfiniteReality) dafür geeignet. Moderne PC-Graphikkarten haben damit jedoch keine Probleme. Ein anderes pixelbasiertes, zur schnellen Vorschau von Translationen einsetzbare Verfahren wurde im Rahmen der vorliegenden Arbeit untersucht und beruht auf Kopieren und Zoomen der Rendering-Area. Dabei werden die Pixel-Daten innerhalb des Bildspeichers bewegt, außerdem wird der Z-Buffer nicht benötigt, wodurch dieses Verfahren auf praktisch allen aktuell eingesetzten Graphiksystemen verwendbar ist. Zwar hat diese Darstellung mit Hilfe der OpenGL Pixeloperationen nur Vorschaucharakter, und die Interaktionen, für die dieses Verfahren angewandt werden kann, sind im wesentlichen auf Translationen in Blickrichtung oder parallel zur Bildebene beschränkt. Dies sind jedoch sehr häufige Interaktionen, und ein sofortiges Feedback über das Ausmaß der Translation ist dabei oft wünschenswerter als eine verzögerte Detaildarstellung. Beim Translieren in der Bildebene wird das Bild um einen Betrag verschoben, der dem visuellen Effekt der Translation entspricht (Abb. 2.12). Beim Translieren in Blickrichtung 40 Grundlagen Abbildung 2.12: Translation parallel zur Bildebene, mit Orthogonalprojektion. Links: Ausgangszustand. Mitte: Vorschau zur Interaktionszeit durch Verschieben des Bildes. Rechts: Neu gerendertes Bild nach Beenden der Interaktion. Abbildung 2.13: Translation in Richtung des Betrachters, perspektivische Projektion. Links: Ausgangszustand. Mitte: Vorschau zur Interaktionszeit durch Zoomen des Bildes. Rechts: Neu gerendertes Bild nach Beenden der Interaktion. wird das Bild verkleinert oder vergrößert mit Hilfe von OpenGL Pixel-Zoom-Operationen, so dass das neue Bild optisch dem entspricht, das bei einem erneuten Rendern der Szene entstanden wäre (Abb. 2.13). Beim “Hineinzoomen” muss dabei eine gewisse Bildunschärfe in Kauf genommen werden. Bei den anderen Operationen wird der Bildbereich nur noch teilweise ausgefüllt. Daher sind diese Pixel-basierten Operationen nur für Translationen mit geringem bis mäßigem Ausmaß geeignet. In allen anderen Fällen wird die Szene neu gerendert. Die durch die Pixel-Operationen entstandenen Bilder entsprechen, abgesehen von den unausgefüllten Bereichen am Rand der Rendering Area bzw. der Unschärfe beim Hineinzoomen, exakt den Bildern die beim Rendern der Szene nach der Translation entstehen würden, sofern bei der Darstellung eine Orthogonalprojektion verwendet wird. Bei perspektivischen Projektionen kann nur für eine (frei wählbare) Ebene parallel zur Bildebene eine exakte Übereinstimmung erreicht werden. Bei den meisten Anwendungen ist die per- 2.6 Visualisierung von Finite-Elemente-Modellen 41 spektivische Verzerrung nicht allzu groß, so dass eine gute Approximation erreicht wird. Eine minimale Abweichung wird erreicht, wenn die Referenz-Ebene vom Betrachter etwa so weit entfernt ist wie die meisten sichtbaren Objekte. Als Heuristik kann die Position der Ebene durch einen Punkt festgelegt werden, der in der Mitte zwischen dem Zentrum der die Szene umschließenden Kugel und deren Oberfläche in Betrachterrichtung liegt. 2.6.4 Verwendung von Texturen Bei der Visualisierung von Finite-Elemente-Strukturen können Texturen auf vielfältige Weise eingesetzt werden. Kuschfeldt et al. [52, 53] beschreiben die Verwendung von Texturen zur effizienten Visualisierung der FE-Gitterstruktur. Dabei wird jedem Element dieselbe (Luminanz-Alpha-)Textur in Form eines schwarzen Quadrats auf transparentem Hintergrund zugewiesen. So werden die Elementkonturen schwarz eingefärbt, während innerhalb der Elemente die Bauteilfarbe unverändert bleibt (Abb. 2.14 links). Mit Hilfe einer eindimensionalen Textur können außerdem diverse Parameter farblich visualisiert werden [82]. Durch Transparenz-Texturen in Verbindung mit Alpha-Tests und entsprechender Einstellung der Texturmapping-Methode können Teile der Geometrie ausgeblendet werden, um den Blick auf die interessanten Bereiche freizugeben. Das Ausblenden erfolgt während der Rasterisierung, es sind also keine geometrischen Berechnungen (Schnitte) notwendig. Dadurch ist eine interaktive Ändernug der Visualisierungsparameter möglich. Weitere Anwendungen eindimensionaler Texturen sind z.B. die Visualisierung von Unterschieden im Crashverhalten zweier Karosserievarianten [83], ebenso wie die visuelle Darstellung von Abständen zwischen benachbarten Bauteilen (Abb. 2.14 rechts). Abbildung 2.14: Verwendung von Texturen bei der Visualisierung von finiten Elementen. Links: Visualisierung der Finite-Elemente-Struktur mit Hilfe von 2D Luminanz-AlphaTexturen. Rechts: Unterschiede im Crash-Verhalten, visualisiert mit Hilfe von 1D Farbtexturen. 42 2.7 Grundlagen Effiziente Distanzbestimmung Bounding Volumes mit Hilfe von Wegen der Komplexität der zu visualisierenden Geometriedaten ist ein effizientes Verfahren zur Bestimmung von Abständen unentbehrlich. Speziell wenn es um die Frage geht, welches das einem bestimmten Punkt nächstliegende Element ist, müsste im Normalfall der Abstand sämtlicher Elemente zu dem gegebenen Punkt bestimmt werden. Bei einer Problemstellung wie der Distanzvisualisierung, wo es nötig ist, zu jedem Netzknoten den Abstand zum nächstliegenden Bauteil zu bestimmen, wäre der Aufwand O(n2 ), also proportional zu dem Quadrat der Knoten- bzw. der Elementanzahl n und damit nicht praktikabel. Eine Verringerung des Aufwandes von O(n2 ) auf O(log2 (n)2 ) lässt sich erreichen, indem man eine Methode verwendet, die ihre Ursprünge im Raytracing [88] und in der Kollisionserkenung [31] hat. Es handelt sich hierbei um eine hierarchische Struktur von Bounding Volumes (BVs). Ein Bounding Volume ist eine einfache, konvexe Hilfsgeometrie, die ein komplexeres Objekt vollständig umschließt. Für diese einfache Hilfsgeometrie lässt sich schnell herausfinden, ob ein Punkt, eine Linie (z.B. ein Lichtstrahl bei Raytracing), ein anderes Objekt bzw. dessen Bounding Volume vollständig außerhalb liegt oder nicht. Liegt der Punkt, die Linie usw. vollständig außerhalb des Bounding Volumes eines Objekts, so gilt dies mit Sicherheit auch für das Objekt selbst, welches vollständig vom Bounding Volume umschlossen ist. In diesem Fall braucht das umschlossene Objekt nicht näher untersucht werden, und man spart die aufwändige Untersuchung des komplexen umschlossenen Objektes. Im zweiten Fall muss das Objekt näher untersucht werden, und der Aufwand ist derselbe wie beim herkömmlichen Verfahren ohne BVs, zuzüglich des Overheads zur Untersuchung des Bounding Volumes. Als Bounding Volumes können z.B. Kugeln oder Quader verwendet werden. Kugeln lassen sich schnell auf Durchdringung testen. Für die Effizienz ist es jedoch auch wichtig, dass das Bounding Volume eng am umschlossenen Objekt anliegt, um dieses möglichst gut zu approximieren und so die Zahl der unnötigen Tests gering zu halten. Für viele Arten von Objekten lässt sich mit einem Quader (Box) ein besseres Ergebnis erreichen. Quader sind schnell auf Durchdringung zu testen, wenn ihre Kanten parallel zu den Koordinatenachsen sind. Man spricht dann von Axes-Aligned Bounding Boxes (AABB). Noch besser an das umschlossene Objekt angepasst sind die sogenannten Oriented Bounding Boxes (OBB) [31]. Hier ist allerdings der Test auf Durchdringung aufwändiger. In der Praxis hat sich das AABB-Verfahren bewährt. Lässt sich das umschlossene Objekt in räumlich getrennte Teile oder Teilobjekte zerlegen, so können diese gruppiert und auf tieferer Ebene wiederum von Bounding Volumes umschlossen werden. Die so entstandene Bounding-Volume-Hierarchie bietet mit jedem Level eine genauere Anpassung an das Objekt, auch wenn die einzelnen Volumen nicht am Objekt ausgerichtet sind. Wenn eine Durchdringung auf oberstem Level festgestellt wird, muss noch nicht das gesamte Objekt untersucht werden, sondern es können die Volumen der nächsten Hierarchiestufe untersucht werden usw. bis entweder keine Durchdringung 2.7 Effiziente Distanzbestimmung mit Hilfe von Bounding Volumes 43 Abbildung 2.15: Sechs Level einer Bounding-Volume-Hierarchie für ein mit finiten Elementen modelliertes Bauteil festgestellt wird oder bis zur letzten Hierarchiestufe, wo jedes Bounding Volume nur noch wenige, leicht zu untersuchende Teilobjekte enthält (Abb. 2.15). Im Fall der finiten Elemente Modelle ergibt sich, wie anfangs erwähnt, häufig die Notwendigkeit, zu einem Bauteil, zu einem Knoten oder zu einem beliebigen Punkt das nächstliegende Bauteil oder Element eines anderen Bauteils zu finden. So muss etwa bei der Validierung von Verbindungselementen möglichst schnell eine Bestimmung der dem Verbindungselement nächstliegenden finiten Elemente erfolgen. Auch bei der Erkennung von Perforationen und Penetrationen im nächsten Kapitel spielt die effiziente Distanzbestimmung eine Schlüsselrolle. 44 Grundlagen Kapitel 3 Perforationen und Penetrationen 3.1 Motivation Obwohl Bauteile aus Blech eine gewisse Materialdicke haben, wird diese Dicke bei der Vernetzung und bei der Visualisierung vernachlässigt. Dadurch können die Bauteile aus Blech durch zweidimensionale finite Elemente dargestellt und als Dreiecke und Vierecke visualisiert werden. Dargestellt wird dabei die mittlere Fläche des Bauteils. Schneidet sich die mittlere Fläche eines Bauteils mit der eines anderen Bauteils, spricht man von Perforation. Im Gegensatz dazu spricht man von Penetration, wenn sich zwei Bauteile nicht perforieren, aber ihre mittleren Flächen sich näher kommen als die mittlere Blechdicke der zwei Bauteile (Abb. 3.1). CAD Bauteil A Perforation FE Netz Penetration Bauteil B Abbildung 3.1: Entstehung von Perforationen und Penetrationen durch Diskretisierung von CAD Daten Penetrationen führen zu abstoßenden Kräften zwischen Bauteilen in der Anfangsphase der Simulation. Dies beeinträchtigt das Simulationsergebnis. Die abstoßenden Kräfte führen allerdings nach eingen Zeitschritten zu einer Behebung der Penetrationen. Außerdem hat der FE-Solver mittlerweile eigene Routinen zur Erkennung und Beseitigung von 46 Perforationen und Penetrationen Penetrationen vor der Simulation. Perforationen hingegen werden vom Solver nicht beseitigt und bleiben bis ans Ende der Berechnung bestehen. Perforationen müssen daher in jedem Fall behoben werden, bevor das Modell an die Simulation übergeben wird. 3.2 Erkennung und Visualisierung von Perforationen Zum Erkennen von Perforationen zwischen zwei Bauteilen muss für jedes finite Element des einen Bauteils festgestellt werden, ob es irgend ein Element des anderen Bauteils perforiert. Um alle Perforationen des gesamten Modells zu finden, muss jedes Bauteil gegen jedes andere getestet werden. Durch die Verwendung von Bounding-Volume-Hierarchien (siehe Abschnitt 2.7) wird erreicht, dass nur Elemente, die einigermaßen nahe beieinander liegen, auf Perforation getestet werden. Sind zwei Elemente hingegen relativ weit voneinander entfernt, sind ihre umschließenden Volumen schon auf höherer Ebene disjunkt und es brauchen keine weiteren Untersuchungen durchgeführt zu werden. Schneiden sich zwei kleinste Bounding Volumes der beiden Hierarchien, wird jedes finite Element des einen BVs mit jedem Element des anderen auf Schnitt getestet. Da viereckige Elemente durch zwei Dreiecke dargestellt werden können, reicht es, einen Schnittalgorithmus für Dreiecke zu implementieren. Zwei Dreiecke perforieren, wenn mindestens eine Kante des einen Dreiecks die Fläche des anderen schneidet. Um dies festzustellen, wird erst der Schnittpunkt jeder Kanten-Gerade des einen Dreiecks mit der Ebene des anderen Dreiecks bestimmt, sofern er existiert, und festgestellt, ob der Schnittpunkt innerhalb der Kante liegt (siehe auch [58, 57]). Wenn das der Fall ist, wird festgestellt, ob der Schnittpunkt auch innerhalb des anderen Dreiecks liegt. Dazu können die baryzentrischen Koordinaten des Schnittpunktes relativ zu dem betreffenden Dreieck bestimmt werden. Befinden sich alle drei baryzentrischen Koordinaten innerhalb des Intervalls [0, 1], so liegt der Punkt innerhalb des Dreiecks. Eine schnellere Methode um festzustellen, ob ein Punkt innerhalb eines Dreiecks liegt, wird in [33] beschrieben. Dabei wird das Dreieck auf eine der drei Koordinatenebenen projiziert, indem die x-, y- oder z-Koordinaten der Knoten gleich Null gesetzt werden. Es wird dabei diejenige Projektionsrichtung gewählt, bei der die projizierte Dreiecksfläche am größten ist, was mit Hilfe der Dreiecksnormalen festgestellt werden kann. Dann wird ein Strahl vom zu testenden Punkt in eine der zwei verbleibenden Achsenrichtungen angenommen und auf Schnittpunkte mit den Dreieckskanten in der Ebene untersucht (Crossings Test). Durch Koordinatenvergleich kann in vielen Fällen vorausgesagt werden, ob ein Schnittpunkt existiert, ohne ihn tatsächlich berechnen zu müssen. Ist die Anzahl der Schnittpunkte ungerade, befindet sich der Punkt innerhalb des Dreiecks, andernfalls befindet er sich außerhalb. Auch wenn auf diese Weise festgestellt wird, dass ein Dreieck ∆1 ein Dreieck ∆2 nicht perforiert, d.h. dass keine der Kanten von ∆1 das Dreieck ∆2 perforiert, muss umgekehrt 3.3 Beseitigung von Perforationen 47 getestet werden, ob ∆2 das Dreieck ∆1 perforiert. Es kann also vorkommen, dass ein Bauteil B1 ein Bauteil B2 perforiert, aber nicht umgekehrt, weil nur die Kanten auf Perforation untersucht werden. Um festzustellen, ob zwei Bauteile perforieren ist also prinzipiell ein beidseitiger (symmetrischer) Check notwendig. Auf diese Weise kann festgestellt werden, welches die Kanten und damit die Knotenpaare sind, die an einer Perforation beteiligt sind. Diese Information ist hinreichend für die Visualisierung der Perforationen, nicht jedoch für deren Behebung. Die Visualisierung der Perforationen kann durch Einfärben der an der Perforation beteiligten Knoten erfolgen. Das einfache Einfärben durch Zuweisen eines Farbwertes zu einem Vertex ist jedoch nicht optimal. OpenGL erzeugt dabei je nach Einstellung entweder einen Farbverlauf anstelle der gewünschten scharfen Abgrenzung, oder aber die zugehörigen Dreiecke werden vollständig eingefärbt. Ausserdem ist bei der Vielzahl von Bauteilfarben die Markierungsfarbe nicht immer gut sichtbar. Eine brauchbare Visualisierung wurde durch die Verwendung von eindimensionalen Farbtexturen, wie sie auch bei der Visualisierung von Penetrationen und Bauteilabständen verwendet werden, erreicht. Zwar stellen die verschiedenen Farben, anders als z.B. bei der Distanzvisualisierung, keine bestimmten Zahlenwerte dar, jedoch sind die markierten Knoten durch die klar abgegrenzten Farbbänder auf den ersten Blick sichtbar (Abb. 3.2 links). Abbildung 3.2: Visualisierung (links) und Beseitigung (rechts) einer Perforation. Die Farbmarkierung wurde hier zur Verdeutlichung beibehalten. 3.3 Beseitigung von Perforationen Für das Beheben von Penetrationen muss das FE-Netz eines oder beider an der Perforation beteiligten Bauteile modifiziert werden. Dabei soll die äußere Form soweit wie möglich 48 Perforationen und Penetrationen erhalten bleiben. Bei dem hier vorgestellten Verfahren werden im ersten Schritt nur die perforierenden Knoten verschoben. Ein Relaxationsalgorithmus wird anschließend ausgeführt, um eventuelle Verzerrungen der finiten Elemente auszugleichen. Um die Perforationen zu beheben, werden die Knoten, welche auf der “falschen“ Seite liegen auf die perforierte Oberfläche des anderen Bauteils projiziert und in Projektionsrichtung noch ein kleines Stück weiterverschoben. Damit liegen die Knoten dann auf der “richtigen“ Seite und können durch die später erläuterte Penetrationsbehebung (Abschnitt 3.6) weiterbehandelt werden (Abb. 3.2 rechts). Welches die “richtige“ Seite für einen Knoten ist, muss vor dessen Verschiebung festgestellt werden. Dabei gibt es zwei Vorgehensweisen: 1. Benutzerdefiniert: Während der Benutzer die zu depenetrierenden Bauteile mit der Maus anwählt, achtet er darauf, je nach Einstellung entweder immer eine perforierende oder immer eine nicht-perforierende Region anzuwählen. Ausgehend vom dem Mauszeiger nächstliegenden Bauteilknoten werden dann iterativ die Nachbarknoten untersucht bis zum Rand der Perforation. Damit legt der Benutzer fest, welches die perforierende Region ist und welche Region nicht verändert werden muss. 2. Automatisch: Die Anzahl der Knoten auf jeder Seite wird ermittelt, und es wird davon ausgegangen, dass die kleinere Region die Perforation darstellt. Der Vorteil hierbei ist, dass keine Benutzerinteraktion nötig ist. Somit kann dieses Verfahren auch bei der automatischen Perforationsbehebung des gesamten Modells eingesetzt werden, wo der Benutzer nicht einzelne Bauteile auswählen muss. Ein seltener Fall, wo die automatische Entscheidung nicht möglich ist, zeigt Abb. 3.3. Abbildung 3.3: Links: symmetrische Perforation (Schnittansicht), bei der es unmöglich ist automatisch zu entscheiden welcher Bereich als der perforierende betrachtet wird. Mitte und rechts: zwei mögliche Beseitigungen der Perforation. Beide Vorgehensweisen sind jedoch nur für die Fälle praktikabel, bei denen die perforierenden Regionen vollständig durch das perforierte Bauteil separiert sind (Abb. 3.4 links). Ist dies nicht der Fall (Abb. 3.4 rechts), müssen andere Wege gegangen werden. Hierbei kann die Tatsache ausgenutzt werden, dass die Knotenverweise jedes Elements einen konsistenten Richtungssinn haben. Sind die Knoten eines Elements beispielsweise im Uhrzeigersinn nummeriert, so trifft dies auch auf das Nachbarelement zu. Damit haben die finiten Elemente auch konsistente Normalenrichtungen. So kann der Benutzer bei der Auswahl der Bauteile gleichzeitig eine von zwei Bauteilseiten festlegen, und damit die gewünschte Deperforationsrichtung (basierend auf der Flächennormalen) angeben. 3.3 Beseitigung von Perforationen 49 Abbildung 3.4: Links: vollständige Trennung des perforierenden Bereiches durch das perforierte Bauteil. Rechts: der perforierende Bereich ist nicht vollständig abgegrenzt. Oft perforieren zwei Bauteile an Flanschen, also an relativ parallelen Flächen mit z.B. weniger als 45◦ Abweichung. Die Perforation aus Abb. 3.3 beispielsweise gilt damit auch noch als relativ parallel, anders als die Perforationen aus Abb. 3.4. Für die Deperforierung von Flanschen empfiehlt sich der in Verbindung mit Flanscherkennung und Free-Form Deformation angewandte Algorithmus zur Anpassung von Flanschen (siehe Abschnitt 6.11). Es kann vorkommen, dass ein perforierender Knoten sich auf zwei oder mehrere verschiedene Elemente des anderen Bauteils gleichzeitig projizieren lässt (Abb. 3.5). Hier kann die Verschiebungsrichtung durch Mitteln der Projektionsrichtungen bestimmt werden, oder es kann eine durch den Benutzer angegebende Richtung bevorzugt werden. Diese Richtung kann z.B. die Normale an der Fläche unter dem Mauszeiger sein. Für ein Maximum an Flexibilität wurde dem Benutzer zudem die Möglichkeit gegeben, einzelne Knoten auf die andere Seite des perforierten Bauteils zu verschieben. Abbildung 3.5: Verschieben eines Knotens, der Projektionen auf mehrere Elemente besitzt Im gegenteiligen Fall, wenn ein perforierender Knoten auf kein Element des perforierten Bauteils projiziert werden kann, wird die Projektion auf die nächstliegende Kante als Verschiebungsrichtung verwendet. Gibt es auch diese Projektion nicht, so ist die Verbindungsgerade zum nächstliegenden Knoten des perforierten Bauteils als Richtung anzunehmen. 50 Perforationen und Penetrationen Schlussfolgernd kann gesagt werden, dass die Beseitigung von Perforationen ein komplexes Themengebiet mit vielen Sonderfällen ist. Eine vollständige Automatisierung ist zwar möglich, doch ist für ein optimales Ergebnis ein gewisses Maß an Benutzerinteraktion nötig. 3.4 Gitterrelaxation Da bei der Beseitigung von Perforationen einzelne Netzknoten unter Umständen um ein beträchtliches Maß verschoben werden, kann es zu Verzerrungen des Netzes kommen. Das bedeutet, dass es starke Abweichungen einzelner Elemente von der idealen gleichseitigen, gleichwinkligen Elementform gibt. Die Gitterrelaxation hat das Ziel, die Gleichmäßigkeit des Gitters wiederherzustellen (Abb. 3.6). Abbildung 3.6: Beispielskizze zur Relaxation. Links: Ausgangssituation. Mitte: Zwei Knoten wurden verschoben, dadurch sind Elemente verzerrt. Rechts: Relaxiertes Gitter. Das Relaxationsproblem ist dem Problem der Glättung von Netzen sehr ähnlich. In beiden Fällen liefert ein Energieminimierungsansatz gute Ergebnisse. Die Minimierung der Membranenergie1 zur Flächenglättung [44, 48] führt in diskretisierter Form zu einer iterativen Anwendung des Umbrella-Operators (Abb. 3.7): n 1X Pi − P = P M − P U (P ) = n i=1 (3.1) Hier sind Pi die n Nachbarknoten eines Knotens P, und PM ist der Mittelpunkt (Baryzentrum) der Nachbarknoten. Die Anwendung des Umbrella-Operators stellt eine Verschiebung des Punktes P in Richtung des Schwerpunkts PM seiner Nachbarknoten dar. Das Ausmaß der Verschiebung in jedem Iterationsschritt kann durch einen Faktor λ ∈ (0, 1] geregelt werden. Die neue Position P 0 eines jeden Knotens P nach einem Iterationsschritt ist damit: P 0 = P + λU (P ) = (1 − λ)P + λPM 1 Taubin [85] erzielte mit einem Filteransatz aus der Signalverarbeitung äquivalente Ergebnisse. (3.2) 3.4 Gitterrelaxation 51 P 1 P2 P P 0 ... P n−1 Abbildung 3.7: Nachbarschaft des Knotens P und Verbildlichung des Umbrella-Operators Das physikalische Äquivalent des Umbrella-Operators entspricht einer Verbindung der Knoten durch Federn. Jede Kante stellt also eine Feder dar, welche bestrebt ist, diese Kante zu verkürzen. Ziel ist es, die Energie dieses Federsystems zu minimieren. Die Federkraft F~i einer Kante P Pi ist proportional zu deren Länge |Pi −P |, in Anlehnung an das Federgesetz von Hook: F~ = n X i=1 F~i = n X i=1 k(Pi − P ) (3.3) k ist hier die Federkonstante. Für k = n1 ist dieser Ausdruck gleich dem Umbrella-Operator. Aufgrund der kleinen Änderung der Ferderlänge kann die Federkraft innerhalb eines Iterationsschrittes als konstant angesehen werden. Die Knotenverschiebung pro Iterationsschritt ist proportional zur Kraft (Grundgesetz der Mechanik) und wird wie in (3.2) berechnet. λ repräsentiert hierbei eigentlich ein Produkt mehrerer konstanter Werte wie Masse, Federkonstante usw. Bei der iterativen Verschiebung der Knoten nach (3.2) wird das Problem der globalen Energieminimierung in eine Reihe von lokalen Problemen umgewandelt, da nicht alle Knoten des Netzes auf einmal, sondern immer nur eine beschränkte Nachbarschaft betrachtet werden muss. Bei der Netzrelaxation soll, anders als bei der Glättung, die äußere Form des Netzes möglichst erhalten bleiben. Es kommen daher einige Randbedingungen hinzu: Knoten dürfen nur auf der ursprünglichen Fläche verschoben werden. Knoten auf den Rändern und auf scharfen Kanten (feature lines) sollen nur entlang von diesen verschoben werden. Eckknoten, d.h. Randknoten, wo der Rand einen gewissen Winkel bildet, werden gar nicht verschoben, also “eingefroren“. Um den Randbedingungen gerecht zu werden, wird nach jeder Verschiebung eines Knotens dieser sogleich auf die ursprüngliche Fläche, bzw. bei Rändern und Kanten auf diese projiziert. Um Schwingungen zu vermeiden, ist es außerdem wichtig, den Verschiebungsfaktor λ nicht zu groß zu wählen und bei der Berechnung sämtlicher Knotenpositionen die Positionen der Knoten aus dem vergangenen Iterationsschritt zu verwenden. Die neuen Knotenpositionen werden also erst im nächsten Iterationsschritt verwendet, so dass alle Berechnungen eines Iterationsschritts auf denselben Daten stattfinden. 52 Perforationen und Penetrationen Abbildung 3.8: Gitterrelaxation (Beispiel). Links: Ausgangszustand. Rechts: Nach der Relaxation. Ob ein Knoten bei der Relaxation verschoben werden muss, oder ob das Netz an dieser Stelle hinreichend relaxiert ist, hängt vom Verhältnis zwischen größtem und kleinstem Abstand zu seinen Nachbarknoten ab. Bei Viereck-Elementen gelten auch solche Knoten als Nachbarknoten, die nicht durch eine Elementkante sondern durch eine Diagonale benachbart sind. Das ist wichtig, weil sonst die Gleichseitigkeit, nicht aber die Gleichwinkligkeit der Elemente angestrebt würde. Da die Diagonale eines idealen, also quadratischen √ Viereck-Elements um 2 länger ist als die Elementkante, müssen die Abstände entsprechend gewichtet werden. Abbildung 3.8 zeigt ein Ergebnis des entwickelten Verfahrens. 3.5 Erkennung und Visualisierung von Penetrationen Das Erkennen und Visualisieren von Penetrationen basiert auf dem Verfahren zur Visualisierung von Bauteil-Abständen (distance-mapping) [26, 82]. Dabei wird für jeden Knoten des Modells oder der ausgewählten Bauteile der kleinste Abstand zum nächstliegenden Bauteil berechnet. Um nicht den Abstand jedes Knotens zu jedem Element berechnen zu müssen, wird die Bounding Volume Hierarchie aus Abschnitt 2.7 verwendet. Der Mindestabstand jedes Knotens wird anschließend in eine Texturkoordinate einer eindimensionalen (RGBA-)Textur umgerechnet. Die eindimensionale Textur enthält eine Anzahl von Farbwerten, welche die verschiedenen Bereiche von Abständen darstellen. Abstände, die unter einem gegebenen Mindestwert liegen, werden in der Regel durch die Farbe rot repräsentiert. Sämtliche Farben können aber auch interaktiv durch den Benutzer verändert werden. Der letzte Wert dieser Farbtabelle ist im Normalfall transparent, hat also einen Alpha-Wert von 0. Dieses Vorgehen hat zur Folge, dass für jeden Punkt auf der Oberfläche eines Bauteils der Abstand zum nächstliegenden Bauteil durch Farbe visualisiert wird. Regionen, für die ein Mindestabstand unterschritten ist, sind rot dargestellt. Regionen, für die der Abstand größer ist als der interessierende Maximalwert, werden nicht farblich markiert. In einem bestimmten Textur-Modus (GL MODULATE) können die nicht interessierenden Bereiche auch ganz ausgeblendet werden, ohne dass Geometrieberechnungen nötig sind. 3.6 Beseitigung von Penetrationen 53 Wie zu Beginn dieses Kapitels erwähnt, sind Penetrationen Bereiche, wo sich zwei Bauteile näher kommen als ein Betrag d, der die mittlere Blechdicke darstellt. Um Penetrationen zu visualisieren, muss einfach der Mindestwert bei der Abstandsvisualisierung dem Betrag d gleichgesetzt werden. 3.6 Beseitigung von Penetrationen Penetrationen führen zu abstoßenden Kräften zwischen Bauteilen. Daher ist es naheliegend, die perforierenden Knoten und die perforierten Elemente entsprechend der abstoßenden Kräfte zu verschieben (Abb 3.9). Da diese Kräfte jedoch von den zu verändernden Knotenpositionen abhängen, empfiehlt sich ein iteratives Vorgehen. Zu berücksichtigen ist hierbei die Tatsache, dass einige, vom Benutzer festgelegte Bauteile nicht verändert werden dürfen. Nach jeder Iteration wird die Penetrationserkennung erneut durchgeführt, da durch die Veränderungen zeitweilig auch neue Penetrationen hinzukommen können. In jeder Iteration werden die penetrierenden Knoten und die penetrierten Elemente entsprechend der abstoßenden Kräfte um einen kleinen Betrag voneinander weggeschoben. Bei den penetrierten Elementen wird dabei die abstoßende Kraft auf die für das Beseitigen der Penetration mindestens nötige Anzahl von Knoten gleichmäßig verteilt. Viereckige Elemente werden dabei wie zwei Dreieckselemente behandelt. Folgende drei Fälle sind zu unterscheiden: • Hat der penetrierende Knoten eine Projektion auf die Oberfläche des penetrierten Elements, wird die abstoßende Kraft allen drei Knoten zugeordnet, die dem betroffenen Dreieck entsprechen. • Hat der penetrierende Knoten keine Projektion auf die Oberfläche des nächstliegenden penetrierten Elements, jedoch eine Projektion auf eine Elementkante (wie in Abb. 3.9), wird die abstoßende Kraft den beiden Knoten dieser Kante zugeordnet. Da Viereck-Elemente wie zwei Dreiecke behandelt werden, gilt hier die erste Diagonale ebenfalls als Kante. • Treffen die ersten beiden Fälle nicht zu, so muss der penetrierende Knoten in der Nähe eines Elementknotens liegen, um eine Penetration hervorzurufen. Die abstoßende Kraft wird dann diesem einen nächstliegenden Elementknoten zugeordnet. Eine weitere Schwierigkeit ergibt sich aus der diskreten Struktur des Problems. Sind in der Realität die Kontaktkräfte kontinuierlich über eine Fläche verteilt, so wirken diese Kräfte beim Finite-Elemente-Modell nur zwischen einzelnen Knoten und Elementen. Die Folgen lassen sich anhand eines Beispiels verdeutlichen. 54 Perforationen und Penetrationen Element d Knoten F Abbildung 3.9: Knoten und Kanten, deren Abstand zu einem Element kleiner als die Blechdicke d ist, penetrieren und werden abgestoßen. Bei der Abstandsberechnung wird nur das dem Knoten nächstliegende Element eines Bauteils berücksichtigt. 2 1 2 1 0 1 2 1 2 Abbildung 3.10: Beispiel für eine ungleichmäßige Verteilung der penetrierenden Knoten auf penetrierte Elemente. Die Zahlen stellen die Anzahl der penetrierenden Knoten für jedes Element des einen Bauteils dar. Gegeben seien zwei ebene, parallele Bauteile mit unterschiedlichem FE-Gitter, deren Abstand zueinander weniger als die mittlere Blechdicke d beträgt, so dass eine Penetration über die gemeinsame parallele Fläche vorliegt. Durch die verschiedenen FE-Gitter ist es sehr wahrscheinlich, dass die Projektion der Knoten auf die Elemente des jeweils anderen Bauteils nicht gleichmäßig ist. Vielmehr wird es einige Elemente geben, die von mehreren Knoten des anderen Bauteils penetriert werden, während andere Elemente vielleicht von keinem Knoten penetriert werden (Abb. 3.10). Würden nun die penetrierenden Knoten und die penetrierten Elemente entsprechend der abstoßenden Kräfte voneinander wegbewegt, würde aufgrund der ungleichmäßigen Verteilung der Kräfte die ursprünglich ebene Fläche der Bauteile verbeult, also uneben werden. Eine Idee zur Lösung dieses Problems besteht darin, den Betrag der Kräfte zu vereinheitlichen, z.B. durch Normierung der Kraftvektoren, so dass allein deren Richtung zählt. Bei mehreren Kräften Fi ist jeweils nur die maximale Komponente dieser Kräfte in jeder der 6 Hauptrichtungen (~ex , ~ey , ~ez , −~ex , −~ey , −~ez ) zu berücksichtigen, und diese Maxima sind dann zu addieren: min((Fi )x ) max((Fi )x ) (3.4) F = max((Fi )y ) − min((Fi )y ) min((Fi )z ) max((Fi )z ) Das Ergebnis dieser Vorgehensweise ist, dass bei Kräftekomponenten in die gleiche Richtung nur die größte Kraft in diese Richtung berücksichtigt wird, bei Kräftekomponenten in entgegengesetzte Richtungen jedoch der Differenzbetrag gebildet wird. Letzteres ist wichtig, damit z.B. gleiche Kräfte in entgegengesetzte Richtungen sich aufheben. 3.7 Ergebnisse 55 Abbildung 3.11: Mehrfache Penetration, bei der entgegengesetzte Kräfte auf den dazwischenliegenden Knoten wirken. Kräfte in entgegengesetzte Richtungen treten z.B. auf, wenn ein Knoten sich zwischen zwei anderen Bauteilen befindet und diese penetriert (Abb 3.11). Bei der Behebung der Penetration mit einem Bauteil würde der Knoten in Richtung des anderen verschoben und könnte dies in ungünstigen Fällen perforieren. Durch die Skalierung der Kräfte auf einen einheitlichen Betrag werden Perforationen verhindert und das Ausmaß der bestehenden Penetrationen wird nicht vergrößert. Um den Betrag der Verschiebung eines Knotens zu erhalten, wird die resultierende Kraft aus Ausdruck (3.4) mit einem konstanten Faktor δ multipliziert. Wurden die Kraftvektoren vor deren Komposition nach (3.4) normiert, so entspricht δ der in einem Iterationsschritt maximal möglichen Knotenverschiebung in eine Hauptrichtung. In der Praxis hat sich ein d Wert von δ = 20 bewährt. Penetrationen zweier veränderbarer Bauteile sind damit nach höchstens 10 Iterationen behoben. Mehrfache Penetrationen, wo z.B. mehrere Blechschichten nahe beieinander liegen, können eine etwas größere Anzahl von Iterationen erfordern. Gibt es mehrere Bauteile, die nicht verändert werden dürfen, kann eine Penetrationsbehebung unter Umständen unmöglich sein. Für diese Fälle ist es sinnvoll, die maximal durchzuführende Anzahl von Iterationen von vorneherein zu begrenzen. 3.7 Ergebnisse Mit der hier vorgestellten Visualisierung und Beseitigung von Perforationen und Penetrationen, gemeinsam mit der Gitterrelaxation, wurde dem Berechnungsingenieur ein Werkzeug zur Behebung einer bedeutenden Kategorie von Netzinkonsistenzen zur Hand gegeben. Durch die Verwendung effizienter Algorithmen, z.B. der Bounding-Volume-Hierarchie, ist ein interaktives Arbeiten gewährleistet. Der Anwender sieht also ohne wahrnehmbare Verzögerung das Ergebnis seiner Aktionen. Zur besseren Veranschaulichung sollen nun die vorgestellten Algorithmen anhand eines Beispiels aus der Praxis vorgeführt werden. Dafür wurde ein Bauteil gewählt, das mehrere Durchdringungen mit einem anderen Teil aufweist (Abb. 3.12). Das später vorgestellte Verfahren zur Justierung des Abstandes von Flanschen (Abschnitt 6.11) wäre hier nur beschränkt einsetzbar, da die Durchdringungen nicht nur an Flanschen auftreten. 56 Perforationen und Penetrationen Abbildung 3.12: Ausgangszustand: mehrere Perforationen (zwei Ansichten des selben FEModells) Abbildung 3.13: Farbliche Visualisierung der Perforationen auf dem zu verändernden Bauteil. Abbildung 3.14: Ansicht nach Behebung der Perforationen In einem ersten Schritt werden die Perforationen farblich hervorgehoben (Abb. 3.13). Dieser Schritt ist optional. Der Bereich mit perforierenden Netzknoten ist rot eingefärbt. Damit die perforierende Region auch von der anderen Seite (rechts im Abb. 3.13) gut zu erkennen ist, wird die Umgebung um die Perforation ebenfalls gekennzeichnet. Dabei wurde ein kontrastreiches Farbspektrum wie bei der Visualisierung der Penetrationen verwendet, mit dem Unterschied, dass hier die Farben allein der Lokalisierung dienen, also keine bestimmten Distanzwerte darstellen. Sind die perforierenden Stellen bekannt oder gut sichtbar wie in diesem Beispiel, kann die Behebung der Perforationen auch direkt angegangen werden. Zur Perforationsbehebung wählt der Benutzer erst das perforierende Bauteil, welches verändert werden soll. Anschliessend wird das zweite, d.h. das perforierte Bauteil angegeben, in Bezug auf welches die Perforation behoben werden soll. Der damit gestartete Algorithmus beseitigt sämtliche 3.7 Ergebnisse 57 Abbildung 3.15: Verschiebung eines einzelnen, vom Benutzer spezifizierten Netzknotens, zur Behandlung von Sonderfällen. Abbildung 3.16: Nach der Verschiebung eines einzelnen Knotens (Abb. 3.15) ist eine Elementkante verkürzt (links, Pfeil) und somit das Gitter verzerrt. Durch die Gitterrelaxation wurde die Gleichmäßigkeit des Gitters soweit wie möglich wieder hergestellt (rechts). Abbildung 3.17: Visualisierung der Bauteilabstände, vor und nach der Beseitigung der Penetrationen. Rote Bereiche (oben) kennzeichnen Penetrationen. 58 Perforationen und Penetrationen Perforationen des angegebenen Bauteils, sofern dies in eindeutiger Weise möglich ist (Abb. 3.14). Gelegentlich kann es notwendig sein, dass der Benutzer einzelne Netzknoten angibt, welche zwecks Beseitigung der Perforation verschoben werden sollen (Abb. 3.15). Wenn perforierende Elemente einen Winkel um die 90◦ bilden, wie in Abb. 3.15, kann es bei der Beseitigung der Durchdringungen zu Verzerrungen einzelner Elemente kommen. Eine Gitterrelaxation, wie in Abschnitt 3.4 beschrieben, ist in solchen Fällen sinnvoll. Abbildung 3.16 zeigt die Auswirkung des Relaxationsalgorithmus anhand dieses Beispiels. Da bei der Perforationsbehebung eine möglichst geringe Veränderung des perforierenden Bauteils vorgenommen wird, beträgt der Abstand zum anderen Bauteil stellenweise weniger als die mittlere Blechdicke. Eine Erkennung und Behebung von Penetrationen, dargestellt in Abb. 3.17, wird daher durchgeführt. Nachdem die Perforationen und Penetrationen erfolgreich beseitigt wurden, kann nun das weitere Preprocessing angegangen werden. Dies kann z.B. in der Definition von Verbindungselementen bestehen, wobei die in den nächsten Kapiteln beschriebene Flanscherkennung und automatische Definition von Schweißpunkten eine Rolle spielt. Kapitel 4 Erkennen von Flanschen 4.1 Motivation Die Einführung unabhängig vernetzter Bauteile in der Crash-Simulation (um 1999) erforderte zugleich ein schlüssiges Konzept für die Verbindung von Bauteilen. Waren im global vernetzten Modell die Bauteile durch gemeinsame Knoten verbunden, ist das heutige Vorgehen mehr an die realen Bedingungen angelehnt. So werden Flansche, die früher bei der Berechnung vernachlässigt wurden, jetzt ebenfalls durch finite Elemente abgebildet. Flansche sind Bereiche eines Bauteils, welche die Verbindung mit einem anderen Bauteil erleichtern. Flansche bilden eine zu dem anderen Bauteil parallele Fläche. Dadurch wird eine hinreichend große Kontaktfläche gebildet, auf welcher Verbindungselemente wie Schrauben, Nieten, Schweißpunkte oder Kleber angebracht werden können. Mit der Einführung unabhängig vernetzter Bauteile wurden spezielle Finite Elemente zur Darstellung von Verbindungen eingeführt. Anfangs wurden alle Verbindungen durch Schweißpunkte (spotwelds, point links) realisiert. Im CrashViewer wurde die Visualisierung und die Manipulation einzelner Schweißpunkte durch [49] implementiert. Inzwischen wurden auch andere Verbindungsarten für die Simulation entwickelt. So werden Klebeverbindungen durch flächige Verbindungselemente (surface links) dargestellt, während Schweißnähte entlang von Bauteilkanten und Schweißlinien auf Flanschen durch linienförmige Verbindungselemente (line links) dargestellt werden. Da es mühsam ist, die Verbindungselemente im Finite-Elemente-Modell einzeln zu definieren, ist es naheliegend, diesen Vorgang zu automatisieren. Hilfreich ist dabei die Tatsache, dass Verbindungselemente meistens auf Flanschen positioniert werden. Im Rahmen der vorliegenden Arbeit wurde deshalb ein Algorithmus zur Erkennung von Flanschen entwickelt. Dieser Algorithmus kann dafür verwendet werden, Schweißpunktlinien, Schweißlinien und Klebeverbindungen mit minimalem Aufwand zu definieren. Das erspart dem 60 Erkennen von Flanschen Benutzer viel Arbeit, da er nicht jedes einzelne Element der Verbindung definieren muss, sondern den ganzen Flansch schnell mit einem anderen Bauteil verbinden kann. Eine vollautomatische Definition von Verbindungen für das gesamte Modell ist ebenfalls möglich. In Abschnitt 6.11 wird darüberhinaus die Flanscherkennung zusammen mit Freiform-Deformation zum Anpassen von Bauteil-Abständen und zur Perforationsbeseitigung verwendet. 4.2 Vorgehensweise Um ein Verfahren zur Flanscherkennung zu entwickeln, wurden die Eigenschaften, die Flansche charakterisieren, in algorithmisch verwertbare Formulierungen gefasst: 1. Ein finites Element kann nur dann zu einem Flansch gehören, wenn der Winkel zwischen der Normale des Elements und der Normalen des nächstliegenden Elements des zu verbindenden Bauteils einen bestimmten Wert γ nicht überschreitet. Dies folgt aus der Tatsache, dass die Oberfläche an Flanschen nahezu parallel zu dem anderen Bauteil ist. Der Wert des Winkels γ ist durch den Benutzer einstellbar und hängt von der weiteren Verwendung des Ergebnisses der Flanscherkennung ab. 2. Ein finites Element kann nur dann zu einem Flansch gehören, wenn der Abstand zu dem zweiten Bauteil einen bestimmten Wert d nicht überschreitet. Der Grund hierfür ist, dass bei einem zu großen Abstand eine Bauteilverbindung technisch nicht machbar ist. Auch der Wert d ist durch den Benutzer einstellbar und vom Kontext der Flanscherkennung abhängig. Der Abstand wird dabei an allen Knoten sowie in der Mitte des potentiellen Flanschelementes gemessen, um eine hinreichende Aussagefähigkeit zu erhalten. Der Bauteilabstand d bei der Flanscherkennung hat in der Regel nichts zu tun mit dem Bauteilabstand bei der Penetrationsbehandlung. 3. Ein Flansch besteht aus einer Mindestanzahl n von zusammenhängenden finiten Elementen. Ein Element allein stellt also noch keinen Flansch dar, auch wenn die ersten beiden Bedingungen erfüllt sind. 4. Flansche haben eine längliche Form. Da Flansche sich entlang von Bauteilrändern erstrecken, ist die Länge des Flansches wesentlich länger als dessen Breite. Ein Flansch ist also in der Regel bandförmig. Änderungen der Breite im Flanschverlauf sind eher selten. Der Benutzer kann eine maximale Flanschbreite w angeben, die bei Zweideutigkeiten dazu verwendet wird, die Längsrichtung des Flansches zu bestimmen. 5. Durch die Bandform mit relativ geringer Breite ergibt sich bei der Vernetzung eine regelmäßige Struktur des Finite-Elemente-Netztes auf der Oberfläche des Flansches. Dreiecke sind eher selten, und die Viereckelemente sind an den Rändern des Flansches ausgerichtet. Ausnahmen sind allerdings möglich. 4.2 Vorgehensweise 61 6. Flansche können Lücken und Sicken enthalten. Diese stellen eine Unterbrechung des Flanschverlaufes dar. Eine Möglichkeit besteht darin, die einzelnen Teile als unabhängige Flansche zu behandeln. In Abschnitt 5.2 wird eine Vorgehensweise gezeigt, welche es ermöglicht, die Flanscherkennung über Sicken und Lücken hinweg fortzusetzen. Punkt 1 und 2 lassen sich einfach Element für Element überprüfen. Bei der Überprüfung der Normalenabweichung wird dabei aus Effizienzgründen mit cos(γ) verglichen, da der Cosinus des Winkels unmittelbar durch das Skalarprodukt der Normalen erhalten wird. Das nächstliegende Element für 1 und 2 wird hier mit Hilfe der Bounding Volume Hierarche effizient gefunden. Aus Punkt 3 lässt sich folgern, dass ausgehend von einem Flanschelement durch Nachbarschaftssuche alle anderen Elemente des Flansches gefunden werden können. Das erste Flanschelement kann durch den Benutzer angegeben werden, z.B. implizit beim Mausklick auf den Flansch der bearbeitet werden soll. Ist keine Benutzerinteraktion erwünscht, so wie beim vollautomatischen Verbinden sämtlicher Flansche, werden alle Elemente untersucht, sofern sie noch nicht durch Nachbarschaftssuche als zu einem Flansch zugehörig markiert wurden. Die Nachbarschaftssuche wurde von einem Algorithmus zum Durchsuchen von Bäumen nach [77] abgeleitet. Ein Baum ist ein spezieller, azyklischer Graph und besteht aus Knoten, die durch Zweige so verbunden sind, dass eine hierarchische Struktur entsteht. Die Wurzel des Baums wird hierbei als höchste Ebene, oder Level 0 bezeichnet. Alle anderen Knoten sind Kinder je eines Knotens der nächsthöheren Ebene. Knoten ohne Kinder werden Blätter genannt. Im Fall der Flanschsuche ist die Wurzel das Startelement. Die Kinder eines jeden Knotens sind die Nachbarelemente dieses Knotens, sofern sie noch nicht als Nachbarn eines anderen Elements bereits im Baum enthalten sind, und sofern sie die Flanscheigenschaften (Punkt 1 und 2) erfüllen (Abb. 4.1). Durch die Nachbarschaftsbeziehungen sind somit sämtliche Elemente eines Flansches in einem Baum angeordnet. Durch Markieren der bereits bearbeiteten Elemente wird sichergestellt, dass es im Baum keine Duplikate gibt. Bei der Durchsuchung eines Baums gibt es zwei Varianten: die Tiefensuche (depth first) und die Breitensuche (breadth first). Bei der Tiefensuche wird bei jeder Verzweigung erst der Pfad bis zu den Blättern (= Knoten ohne weitere Verzweigungen) verfolgt, bevor der nächste Zweig bearbeitet wird. Bei der Breitensuche werden erst alle Knoten einer Ebene bearbeitet, bevor die nächste Ebene und schließlich die Blätter bearbeitet werden. Die Tiefensuche kann rekursiv oder mit Hilfe einer Stapel-Struktur (Stack) implementiert werden. Die Breitensuche kann mit Hilfe einer Warteschlange (FIFO-Queue) implementiert werden. In einigen Anwendungsfällen können beide Varianten hergenommen werden, um den Baum zu durchsuchen. Bei den verschiedenen Anwendungen der Flanscherkennung, die hier vorgestellt werden, ist die Breitensuche von Vorteil. 62 Erkennen von Flanschen 18 12 6 2 7 13 19 24 14 8 3 1 5 11 17 23 20 15 9 4 10 16 22 27 21 Startelement Nachbarn 1. Ordnung Nachbarn 2. Ordnung u.s.w. 1 2 3 6 7 8 12 13 14 18 19 20 9 4 5 10 11 16 17 22 23 26 15 25 21 24 25 ... 26 ... ... Abbildung 4.1: Flanscherkennung: Links: Progressive Nachbarschaftssuche. Rechts: Zugehöriger Baum. Jeder Knoten des Baumes stellt ein Flanschelement dar. Die längliche Form und die gleichmäßige Gitterstruktur (Punkt 4 und 5) werden bei der automatischen Positionierung von Schweißpunkten (Kapitel 5) genutzt, um z.B. die Mittellinie zu berechnen, auf welcher die Schweißpunkte liegen werden. Für die Justierung des Flanschabstandes spielen diese beiden Eigenschaften keine Rolle. 4.3 Ergebnisse Im vorherigen Abschnitt wurde die Vorgehensweise bei der Erkennung von Flanschen theoretisch erläutert. An dieser Stelle soll anhand von einigen Beispielen aus der Praxis ein Eindruck von der Formenvielfalt der Flansche vermittelt werden. Abbildung 4.2 zeigt einen ringförmig geschlossenen Flansch mit ungleichmäßiger Breite. Zudem stellt dieser Flansch die Verbindung zu mehr als einem, nämlich zu drei weiteren Bauteilen her. Zur besseren Veranschaulichung ist der Flanschbereich heller dargestellt und mit einer gestrichelten Linie umgeben. Der ringförmige Flansch wird vom Erkennungsalgorithmus, ausgehend von einem Startelement, in beide Richtungen abgearbeitet. Der Algorithmus terminiert, sobald alle Flanschelemente als besucht markiert sind. Die sich im Flanschverlauf ändernde Breite stellt ebenfalls kein Problem dar, weil die Nachbarschaftssuche in alle möglichen Richtungen verläuft. 4.3 Ergebnisse 63 Abbildung 4.2: Ringförmig geschlossener Flansch mit ungleichmäßiger Breite Je nach Anwendung kann entweder der gesamte Flansch betrachtet werden, oder diejenigen Bereiche (Elemente) herausgefiltert werden, die sich in direkter Nachbarschaft zu einem bestimmten anderen Bauteil befinden. Letzteres ist wichtig für die Definition von Verbindungselementen, da sich an der Verbindungsstelle kein weiteres Bauteil zwischen den verbundenen Teilen befinden darf. Dies wird aber in jedem Fall bei der Erzeugung von Verbindungselementen überprüft. Abbildung 4.3 zeigt einen Flansch, der einfach durch zwei überlappende Bleche gegeben ist. Zur Veranschaulichung ist in dieser Abbildung eines der Bleche transparent dargestellt. Es gibt hier keinen speziellen, abgewinkelten Flanschbereich. Der Flansch wird allein durch die Fläche definiert, auf der sich die beiden Teile nahe kommen. Aufgrund der ele- Abbildung 4.3: Flansch gegeben durch zwei überlappende Bleche 64 Erkennen von Flanschen Abbildung 4.4: Flansch mit Unebenheiten (Sicken) mentweisen Prüfung wird auch hier der Flansch richtig erkannt. Abbildung 4.4 stellt einen Flansch mit Unebenheiten (Sicken) dar. An solchen Stellen besteht eine erhöhte Winkelabweichung zwischen Flansch und darunterliegendem Bauteil. Die für Flansche zulässige Winkelabweichung ist durch den Benutzer einstellbar. Ähnliches gilt für den Abstand der einzelnen Flanschknoten zum darunterliegenden Bauteil. Der hier abgebildete Flansch wird allerdings auch unter Beibehaltung der ursprünglichen (Default-)Einstellungen erkannt. Bei noch größeren Unebenheiten können die zulässigen Werte für Abstand und Winkelabweichung erhöht werden. Allerdings sollten diese Werte nur so hoch wie nötig sein, da sonst in einigen Fällen zusätzliche Elemente fälschlicherweise als zum Flansch gehörend eingestuft werden. Diese Gefahr ist insbesondere dann gegeben, wenn auch andere Bereiche des Flanschbauteiles relativ parallel und nahe zum anderen Bauteil liegen – so wie es in diesem Beispiel der Fall ist. In einigen Fällen gibt es außerdem Unterbrechungen im Flanschverlauf, so dass der Flansch in mehrere Teile unterteilt wird. In einem solchen Fall kann entweder jeder Teilflansch als eigenständiger Flansch behandelt werden, oder es werden sämtliche Flansche mit Bezug zu einem zweiten Bauteil erkannt. Ist jedoch nicht nur ein Startpunkt für die Flanschsuche gegeben, sondern zwei Punkte auf dem Flansch, so kann der Algorithmus erweitert werden, so dass auch Unterbrechungen im Flanschverlauf sinnvoll behandelt werden. Mehr dazu ist in Abschnitt 5.2 zu lesen, wo das Erzeugen von Schweisspunktlinien entlang von Flanschen beschrieben wird. Kapitel 5 Automatische Definition von Schweißpunktverbindungen 5.1 Überblick Nachdem in Kapitel 4 ein Verfahren zur Flanscherkennung präsentiert wurde, soll hier als erste Anwendung die automatische Platzierung von Schweißpunkten vorgestellt werden. Das Verfahren besteht im Wesentlichen aus folgenden Schritten: 1. Suche einen zusammenhängenden Elemente-Pfad minimaler Länge, welcher den Flanschverlauf approximiert. 2. Suche für jedes Element des Pfades die nächstliegenden beiden Flanschränder in Form von Elementkanten. Eliminiere Duplikate. 3. Bestimme die Mittelpunkte für die jeweils 4 Knoten der Paare von Elementkanten, welche im vorigen Schritt als Flanschränder gefunden wurden. Die Sequenz der Mittelpunkte ergibt einen Polygonzug, welcher die Mittellinie des Flansches approximiert. 4. Teile die Mittellinie in Segmente gleicher Länge entsprechend dem gewünschten Abstand zwischen den Schweißpunkten. Platziere die neuen Schweißpunkte entsprechend auf der Mittellinie. Eine Idee, die Schweißpunktlinien durch Spline-Kurven zu modellieren, wurde wieder verworfen. Zwar wurde durch [49] die Definition gerader Schweißpunktlinien durch Angabe der Endpunkte realisiert. Dieses Verfahren auf gekrümmte Schweißpunktlinien auszudehnen würde jedoch einen zu großen Aufwand für den Benutzer bedeuten, der dann eine größere Anzahl von Kontrollpunkten positionieren müsste. 66 Automatische Definition von Schweißpunktverbindungen Stattdessen wurde verucht, den Aufwand für den Benutzer zu minimieren. Bei der Definition von Schweißpunktlinien gibt es drei Anwendungsszenarien: 1. Der Benutzer legt einen Anfangs- und einen Endpunkt auf dem Flansch fest. Gewünscht ist eine Reihe von Schweißpunkten entlang der Flanschmittellinie, begrenzt durch die beiden vorgegebenen Punkte. Das mit dem Flansch zu verbindende Bauteil wird mit einem dritten Mausklick festgelegt. 2. Der Benutzer legt die beiden zu verbindenden Bauteile fest. Bei der Spezifikation des ersten Bauteils klickt er auf einen Flansch und wählt so ein Element des Flansches aus, von wo aus die Suche gestartet wird. 3. Für einige oder alle Bauteile werden sämtliche Flansche detektiert und durch Schweißpunkte mit den entsprechenden Partnerbauteilen verbunden. Im Folgenden werden diese drei Szenarien vorgestellt. Dabei wird auch die Anpassung des Flanscherkennungsverfahrens an die unterschiedlichen Szenarien beschrieben. 5.2 Szenario 1 Beim Szenario 1 werden mit der Angabe von Anfangs- und Endpunkt auch implizit zwei Flanschelemente festgelegt, welche diese zwei Punkte beinhalten. Diese zwei Flanschelemente dienen als Start- und Zielelement bei der Suche eines kürzesten Pfades von jeweils benachbarten Elementen. Durch den kürzesten Pfad erhält man eine erste Information über den Flanschverlauf. Es gibt im Allgemeinen mehrere gleichlange Pfade, die ein Startelement mit einem Zielelement verbinden, und dabei die Eigenschaft besitzen, dass kein kürzerer Pfad von Elementen zwischen Start und Ziel existiert. Bei der Suche eines kürzesten Pfades wird ein Algorithmus verwendet, wie er in Kapitel 4 beschrieben ist. Dabei ist das Startelement die Wurzel des baumförmigen Graphen. Dieser wird solange durchsucht (Breitensuche), bis das Zielelement gefunden ist. Es werden also zuerst die (Kanten-)Nachbarn des Startelements nach dem Zielelement durchsucht, dann deren Nachbarn, sofern es sich um Flanschelemente handelt, usw. Im Zuge dieser Baumsuche wird jedem Kind eines Knotens ein Zeiger auf den Knoten zugeordnet. Das heißt, jedes Element enthält einen Zeiger auf dessen Vorgängerelement. Der Weg zur Wurzel des Baumes, also zum Startelement, lässt sich damit zurückverfolgen. So kann am Ende der Suche, wenn das Zielelement gefunden wurde, eindeutig ein kürzester Pfad zum Startelement ermittelt werden. Dabei wird ausgehend vom Zielelement der jedem Element zugeordnete Zeiger verwendet, um das jeweilige Vorgängerelement zu erhalten. Der so gefundene Elementpfad wird in Form einer Liste für die weitere Verarbeitung bereitgestellt. 5.2 Szenario 1 67 Enthält der Flansch jedoch Lücken oder Sicken (Abb. 5.1), kann eventuell kein durchgehender Pfad von Flanschelementen zwischen den gegebenen Punkten gefunden werden. Auf Lücken und Sicken können bzw. sollen keine Schweißpunkte gesetzt werden. Dennoch soll auf dem restlichen Flansch eine Verbindung definiert werden. Abbildung 5.1: Sicken und Lücken erschwerden die Flanscherkennung. Schweißpunkte, als rote Quader visualisiert, dürfen nicht auf Sicken oder Lücken positioniert werden. In diesem Fall hat es sich als sinnvoll erwiesen, eine minimale Anzahl von Nicht-FlanschElementen zuzulassen, um einen durchgehenden Pfad zu erhalten. In der späteren Verarbeitung wird an diesen Stellen die Schweißpunktlinie unterbrochen. Um bei der Suche nach dem Zielelement Lücken und Sicken falls nötig zu überspringen, werden die Nicht-Flansch-Elemente unter den angetroffenen Nachbarelementen in eine eigene Liste eingetragen. In dieser Liste befinden sich somit all diejenigen Elemente, die unmittelbar an den Flansch angrenzen, zumindest wenn sie sich innerhalb des aktuell erreichten Suchradius befinden. Falls es keine weiteren Flanschelemente gibt, also wenn der gesamte Baum erfolglos durchsucht wurde, wird die Liste der an den Flansch angrenzenden Elemente verwendet, um die Suche fortzuführen. So ist sichergestellt, dass in jedem Fall ein Pfad gefunden wird. In vereinfachter Form sieht der Programmcode wie folgt aus: /** Methode findPath liefert kürzesten Pfad zwischen start und target **/ list<Elements> findPath(Element start, Element target) { Element element; // derzeit bearbeitetes Element fifoQueue<Elements> fifo; // für Flanschelemente list<Elements> reserve; // für Nicht-Flansch-Elemente bool targetReached = false; // terminiert die while-Schleife fifo.add(start); // Wurzel des durchsuchten Baumes while (not targetReached) { // Ziel wird sicher gefunden element = fifo.retrieve(); // nächster Knoten des Baumes for (all neighbour of element) { // Durchsuche Nachbarschaft if (element == target) { // Ziel wurde erreicht targetReached = true; // Abbruch der while-Schleife neighbour.previous = element; // um den Weg zurückzuverfolgen 68 Automatische Definition von Schweißpunktverbindungen break; } if (neighbour.unvisited) { neighbour.markVisited(); neighbour.previous = element; if (neighbour.isFlange) fifo.add(neighbour); else reserve.add(neighbour); } } if (fifo.isempty) fifo.consume(reserve); } list<Elements> result; for (element = target; element != start; element = element.previous) result.append(element); return result; // Abbruch der For-Schleife // wenn bereits besucht: ignorieren // merke den Rückweg // speichere Nachbarn // bis zum nächstgrößeren Suchradius // Reserve-Elemente, // falls Flansch unterbrochen ist // auf dem Flansch kein Weg zum Ziel // fahre mit Reserve-Elementen fort // für den gefundenen Pfad // Rückverfolgung des Pfades // vom Ziel- zum Startelement // Richtung des Pfades unwichtig } Der so gefundene Pfad ist in der Regel nicht eindeutig, aber es ist sichergestellt, dass kein kürzerer Pfad zwischen Start und Ziel existiert. Durch die ringförmige Suche um das Startelement herum würde ein potentiell existierender kürzerer Pfad früher gefunden. Somit kann die Existenz eines kürzeren Pfades ausgeschlossen werden. Obwohl es Bereiche geben kann, wo der Pfad quer zum Flansch verläuft, ist der Pfad größtenteils am Flanschverlauf ausgerichtet. Jeder Querschnitt des Flansches zwischen Start und Ziel schneidet den Pfad. Diese Kontinuität des Pfades ermöglicht es, eine durchgehende Mittellinie zu bestimmen. Die Mittellinie, die hier gesucht wird, ist der geometrische Ort aller Punkte, die von den Flanschrändern in Längsrichtung gleichweit entfernt sind. Die Entfernung sollte dabei auf der Flanschoberfläche gemessen werden. Eine direkte Entfernungsmessung würde fehlschlagen, wenn z.B. sich noch ein anderer Rand in der Nähe befindet. Die Länge der Mittellinie wird beschränkt durch die benutzerdefinierten Endpunkte der Schweißpunktlinie. In den Fachpublikationen findet man verschiedene Algorithmen zum Bestimmen der Mittellinie eines Polygons (z.B. [13]). Doch entweder arbeiten diese Algorithmen auf Pixeldarstellungen von Polygonen, oder sie erfordern vollkommen ebene Polygone. Außerdem weisen die so gefundenen Mittellinien Verzweigungen auf, und sind deshalb als Basis für die Generierung von Schweißpunktlinien ungeeignet. Bei dem hier vorgestellten neuen Verfahren zur Bestimmung der Mittellinie wird die 5.2 Szenario 1 69 vorwiegend regelmäßige Gitterstruktur auf Flanschen ausgenutzt. Da die finiten Elemente größtenteils viereckig und am Flanschverlauf ausgerichtet sind, lassen sich die zu einem Element nächsten Ränder durch eine Suche in vier Richtungen ermitteln. Die vier Richtungen sind durch die Elementkanten bestimmt, und werden solange verfolgt, bis entweder a. ein Rand des Flansches, also ein Nicht-Flansch-Element, b. ein Dreieck-Element, oder c. die als Flanschbreite maximal anzunehmende Anzahl von Elementen erreicht wird. Bei einem regelmäßigen Vierecksgitter wäre Abbruchkriterium a hinreichend. Dreiecke und andere Unregelmäßigkeiten können zu einer unerwünschten Richtungsänderung der elementweisen Randsuche führen. Deshalb wurden die Abbruchkriterien b und c eingeführt. Die richtungsgebundene Suche führt zu vier idealerweise geradlinigen Pfaden von Elementen. Diese Pfade sind nicht zu verwechseln mit dem Elementpfad zwischen Start- und Zielelement, welcher nicht richtungsgebunden ist. Von den vier richtungsgebundenen Elementpfaden werden jeweils zwei gegenüberliegende aneinandergefügt. So erhält man zwei Elementpfade φ1 und φ2 , von denen der kürzere quer zur Flanschrichtung verläuft. Diese Pfade sind in etwa senkrecht aufeinander und haben als gemeinsames Element das Ausgangselement der Suche. Die vier Knoten (K1 , ..., K4 ) an den gegenüberliegenden Enden des kürzeren Elementpfades liegen also auf den längsverlaufenden Flanschrändern. Der Schwerpunkt 3 +K4 S = K1 +K2 +K der vier Knoten bildet somit einen Stützpunkt der Mittellinie. 4 War jedoch bei dem Zustandekommen beider Pfade (also bei jeweils mindestens einem der Teilpfade) Abruchkriterium b oder c erfüllt, kann keine Aussage über die Flanschrichtung gemacht werden. So kann beispielsweise an einer scharfen (z.B. 90◦ ) Richtungsänderung des Flansches im Allgemeinen kein Stützpunkt der Mittellinie gefunden werden, da hier ein Längs- und ein Querrand des Flansches gegenüberliegen (Abb. 5.2). Derartige Stellen treten aber nur vereinzelt auf und können übersprungen werden, da die Mittellinie auch bei einigen fehlenden Stützpunkten noch hinreichend genau approximiert wird. Das Finden der nächsten gegenüberliegenden Ränder erfolgt auf die beschriebene Weise für alle Elemente des (nichtgerichteten) Elementpfades zwischen Start- und Zielelement, letztere eingeschlossen. An Stellen, wo dieser Pfad quer zur Flanschrichtung verläuft, werden allerdings mehrmals dieselben Randelemente gefunden, was unnötigerweise zu mehrfachen gleichen Stützpunkten der Mittellinie führen würde. Diese Duplikate sind aber problemlos zu eliminieren. Ist die Mittellinie im Bereich zwischen Start- und Zielelement gefunden (Abb. 5.3), müssen noch die genauen Endpunkte ermittelt werden. Dies geschieht indem die beiden Punkte, die der Benutzer auf der Flanschoberfläche angegeben hat, auf die Mittellinie 70 Automatische Definition von Schweißpunktverbindungen Legende: Randfindung erfolgreich Legende: Mausklicks Randfindung nicht erfolgreich der + Stützpunkt Mittellinie Elementpfad + Mittellinie Schweißpunkte Abbildung 5.2: Aufgrund der Vielfalt von Flanschformen ist es in Ausnahmefällen sinnvoll, die Randerkennung abzubrechen und die Mittellinie an solchen Stellen zu interpolieren. Abbildung 5.3: Zwischenschritte des Verfahrens zum automatischen Positionieren einer Schweißpunktlinie. projiziert werden. Dabei kann es nötig sein, die Mittellinie um einen kleinen Betrag durch lineare Extrapolation zu verlängern. Bei der anschließenden Verteilung der Schweißpunkte auf der Mittellinie soll einerseits der gewünschte Abstand zwischen den Schweißpunkten möglichst eingehalten werden, andererseits sollen zwei Schweißpunkte falls möglich genau an den Enden der Mittellinie platziert werden. Letzteres ist im Allgemeinen nur realisierbar, wenn der tatsächliche Schweißpunktabstand etwas größer oder etwas kleiner als der gewünschte ist. Daher hat der Benutzer drei Optionen: a. der angegebene Betrag stellt den mindestens erforderlichen Abstand dar; b. der angegebene Betrag stellt den höchstens erforderlichen Abstand dar; c. der angegebene Abstand soll genau eingehalten werden, dafür endet die Schweißpunktlinie im Allgemeinen vor dem angegebenen Endpunkt. Abbildung 5.4 zeigt ein Anwendungsbeispiel dieses Szenarios. Der Abstand zwischen den Schweißpunkten wurde dabei so eingestellt, dass er in etwa dem Abstand zwischen den Sicken auf dem Flansch entspricht. So wurde vermieden, dass Schweißpunkte auf den Sicken positioniert werden. 5.3 Szenario 2 71 Abbildung 5.4: Anwendungsbeispiel für Szenario 1 5.3 Szenario 2 Bei Szenario 2 klickt der Benutzer auf einen Flansch und auf ein damit zu verbindendes Bauteil. Die Schweißpunktlinie soll sich über die gesamte Länge des Flansches erstrecken. Auch hier wird das Flanschelement, welches durch den ersten Klick festgelegt wurde, als Startelement für die Flanschsuche verwendet. Da es jedoch in diesem Szenario kein Zielelement gibt, muss das Suchverfahren geändert werden. Um eine Schweißpunktlinie über die gesamte Länge des Flansches zu erzeugen, ist ein entsprechender Elementpfad, der sich über die gesamte Länge erstreckt, hilfreich. Gesucht sind also zwei Elemente an unterschiedlichen Enden des Flansches. Beim Betrachten der Suchprozedur aus Szenario 1 stellt man fest, dass beim Nichtfinden des Zielelementes, z.B. wegen Unterbrechung des Flansches, dasjenige Element als letztes in der FIFO-Warteschlange übrigbleibt, welches am weitesten vom Startelement entfernt ist. Auf dieser Erkenntnis basiert das Verfahren von Szenario 2, wo es darum geht, den gesamten Flansch und nicht nur einen Abschnitt davon mit Schweißpunkten zu versehen. Allerdings gilt hier die Einschränkung, dass der Flansch nicht durch Sicken oder Lücken unterbrochen sein darf. Der Grund ist verständlich: da es kein Zielelement gibt, würde die Suche sämtliche Elemente des Bauteils in nicht sinnvoller Reihenfolge erfassen und der gefundene Pfad wäre nicht brauchbar. Allerdings ist diese Einschränkung unwesentlich, da die einzelnen Segmente des Flansches nacheinander verbunden werden können. Durch die vereinfachte Handhabung – es muss nur irgendwo auf den Flansch geklickt werden, die Enden werden automatisch bestimmt – ist dies schnell vollbracht. Allerdings ist auf die beschriebene Weise nur das eine, vom Startelement entfernteste Flanschelement, zu finden. Benötigt werden jedoch zwei Elemente an gegenüberliegenden Enden des Flansches. 72 Automatische Definition von Schweißpunktverbindungen Legende: Startelement für Gesamtpfad Startelemente für jede Region Querpfad zwecks Flanschtrennung Pfade zu den Flansch−Enden Abbildung 5.5: Der Flansch wird in zwei Teile getrennt, um seine Enden zu bestimmen. Die Lösung, die hierfür erarbeitet wurde, sieht folgendermaßen aus: Man teile den Flansch an der Stelle des Startelements in zwei Abschnitte, und suche für jeden Abschnitt das entfernteste Element. Daraus ergeben sich zwei Teilpfade, die zu einem Gesamtpfad zusammengefügt werden (Abb. 5.5). Die Teilung des Flansches erfolgt hierbei durch einen Streifen von Elementen quer zur Flanschrichtung, welcher das Startelement enthält. Dabei wird das Verfahren verwendet, welches schon bei Szenario 1 für die Bestimmung der nächsten Ränder (für die Mittellinie) eingesetzt wurde. Es werden also in die vier durch die Elementkanten gegebenen Richtungen die Flanschränder gesucht. Auch hier wird vorausgesetzt, dass weder das Startelement, noch ein Element des Querstreifens ein Dreieck ist. Nur gelegentlich ist diese Voraussetzung nicht erfüllt. Dann wird der Benutzer aufgefordert, an eine andere Stelle des Flansches zu klicken. Die Elemente des Querstreifens werden als besucht markiert. Somit werden sie nicht in die Suche einbezogen und es ist gewährleistet, dass die Suche nicht in den anderen Abschnitt übergreift. Als sekundäre Startelemente für die beiden Suchen in den Teilflanschen werden diejenigen zwei Nachbarelemente (von insgesamt vier Nachbarelementen) des ursprünglichen Flanschelements verwendet, welche nicht zum Querstreifen gehören. Das automatische Verbinden von ringförmig geschlossenen Flanschen ist ebenfalls möglich. In Abbildung 5.6 ist ein solches Beispiel dargestellt. Hier verschmelzen die beiden Suchregionen zu einer einzigen. Die erste Suche liefert hier schon das gewünschte Ergebnis, weil der gefundene Pfad zum entferntesten Element rundherum verläuft. Da nach der ersten Suche alle Elemente als besucht markiert sind, wird die zweite Suche, die normalerweise der zweiten Region gilt, sofort beendet. Ähnlich verhält es sich, wenn das Startelement, auf das der Benutzer geklickt hat, am 5.4 Szenario 3 73 Abbildung 5.6: Anwendungsbeispiel für Szenario 2 Ende des Flansches liegt. Auch hier beschränkt sich die Suche auf eine Region, das andere Flanschende ist bereits durch das Startelement gegeben. In allen anderen Fällen gibt es zwei Suchregionen, und damit zwei Teilpfade. Diese Teilpfade bilden zusammen mit dem Startelement einen Gesamtpfad, welcher die gesamte Länge des Flansches abdeckt. Das weitere Vorgehen ist dann gleich wie bei Szenario 1. Von jedem Pfadelement aus werden die nächsten Längsränder des Flansches gesucht, damit wird die Mittellinie bestimmt und darauf werden die Schweißpunkte äquidistant positioniert. In seltenen Fällen könnte es vorkommen, dass ein Flansch sich teilt und damit mehr als zwei Enden hat. Auch in diesem Fall wird der Flansch beim Startelement in zwei Regionen geteilt. Gefunden wird jeweils das vom Startelement am weitesten entfernte Ende jeder Region. Damit erstreckt sich die Schweißpunktlinie entlang der längsten Zweige jeder Region. Die kürzeren Zweige bleiben unverschweißt. Ein weiterer Klick auf die kürzeren Zweige reicht jedoch aus, um diese ebenfalls zu bearbeiten. 5.4 Szenario 3 In diesem Szenario werden Flansche nicht durch den Benutzer angeklickt. Stattdessen werden alle oder eine Teilmenge der Bauteile des Modells miteinander an sämtlichen Flanschen verbunden. Dies ist besonders in der frühen Entwicklungsphase sinnvoll, wenn die Verbindungsinformationen noch nicht verfügbar sind. 74 Automatische Definition von Schweißpunktverbindungen Abbildung 5.7: Anwendungsbeispiel für Szenario 3: Vollautomatisches Verbinden sämtlicher Bauteile durch Schweißpunktlinien. In Abbildung 5.7 ist ein Beispielergebnis für dieses Szenario zu sehen. Aus Gründen der Übersichtlichkeit sind hier nur vier Bauteile dargestellt. Da in diesem Szenario kein ausgewiesenes Startelement existiert, werden sämtliche Elemente aller zu verbindenden Bauteile auf ihre Flanscheigenschaft hin untersucht. Wird ein Flanschelement gefunden, wird der Rest des zugehörigen Flansches wie in Szenario 2 detektiert. Die Elemente der bereits erkannten Flansche werden im Zuge der Suche markiert und scheiden damit als Startelemente für weitere Flansche aus. Ob ein Element zu einem Flansch gehört, wird in diesem Szenario allerdings etwas genauer überprüft. Die Bedingungen betreffend Normalenabweichung und Abstand, welche bei Szenario 1 und 2 elementweise getestet wurden, sind hier in einigen Fällen nicht ausreichend. Diese Bedingungen würden nämlich auch von mehreren Elementen des mit dem Flansch zu verbindenden Bauteils erfüllt. Bei Szenario 1 und 2 wurde durch den Benutzer festgelegt, welches Bauteil den Flansch enthält und welches damit verbunden wird. In Szenario 3 muss algorithmisch festgestellt werden, auf welchem der beiden Bauteile der Flansch zu suchen ist. Für dieses dritte Testkriterium des Flanschelements wird die Tatsache ausgenutzt, dass das Finite-Elemente-Gitter in der Regel an den Flanschrändern ausgerichtet ist. Deshalb wird von jedem potentiellen viereckigen Flanschelement aus wie bei Szenario 1 und 2 eine Suche nach den nächsten Rändern ausgeführt. Ist das Gitter nicht an den Flanschrändern ausgerichtet, sind beide an den Elementkanten ausgerichtete Pfade kürzer als die maximal anzunehmende Flanschbreite (Abb. 5.8). Dies ist ein Indiz dafür, dass sich das betreffende Element nicht auf dem Flansch, sondern auf dem gegenüberliegenden Bauteil befindet. Tatsächlich kann es auch auf Flanschen Elemente geben, bei denen die Identifizierung der Ränder und damit der Längsrichtung fehlschlägt (Abb. 5.9). Das bedeutet, dass dieses 75 Flansch B zu au te ver il b oh in ne de Fl nde an s sc h 5.4 Szenario 3 Abbildung 5.8: Bestimmung des Flansch-Bauteils durch Ermittlung naheliegender Ränder Legende: untersuchtes Element Querpfad Längspfad ungeeignete Elemente Abbildung 5.9: Prüfung des Gitterverlaufs in Bezug auf potentiellen Flansch. Einige Elemente sind ungeeignet für den Test, im Prizip genügt aber bereits ein einziges geeignetes Element. dritte Flanschkriterium bei einigen Elementen nicht erfüllt ist, obwohl sie zum Flansch gehören. Es reicht hier jedoch aus, wenn das Kriterium schon für ein einziges Element erfüllt ist. Dies Element kann dann als Startelement verwendet werden, um durch Nachbarschaftssuche den restlichen Flansch zu erkennen. Wird bei einem Bauteil A ein Flansch erkannt und mit einem Bauteil B verbunden, so kann es dennoch passieren, dass bei Bauteil B an der bereits verbundenen Stelle ebenfalls ein Flansch erkannt wird. Schließlich können auch zwei Flansche miteinander verbunden 76 Automatische Definition von Schweißpunktverbindungen werden. Da der Flansch aber bereits als besucht markiert und verschweißt ist, werden keine neuen Schweißpunkte erzeugt. An Stellen, wo ein angegebener Mindestabstand zu vorhandenen Schweißpunkten unterschritten ist, werden in keinem Fall neue Schweißpunkte gesetzt. 5.5 Zeitverhalten Der Rechenaufwand bei der automatischen Definition von Schweißpunktlinien ist im Wesentlichen linear abhängig von der Anzahl der zu bearbeitenden Elemente. Bei Szenario 1 und 2 wird jeweils nur ein Flansch pro Benutzerinteraktion bearbeitet. Da die Anzahl der Elemente eines Flansches sich in übersichtlichem Rahmen bewegt (Größenordnung 100, Obergrenze etwa 1000 Elemente), liegt die Antwortzeit auf den heute üblichen Arbeitsplatzrechnern unterhalb der vom Benutzer wahrnehmbaren Zeit von einer Zehntelsekunde. Und von dieser Zeit wird, außer bei sehr kleinen Datensätzen, der Großteil für die Aktualisierung des Bildes durch Neurendern der Szene benötigt. Bei Szenario 3 müssen sämtliche Bauteile und deren Elemente betrachtet werden. Daher kann die Antwortzeit bei der Verschweißung kompletter Modelle im Minutenbereich liegen, und das obwohl die Bounding Volume Hierarchie für die Bestimmung der jeweils nächsten Elemente und Bauteile verwendet wird. In Anbetracht der Tatsache, dass für eine komplette Rohkarosserie über 6000 Schweißpunkte gesetzt werden, ist das jedoch eine durchaus akzeptable Zeit. Auf der mid-range Workstation SGI Octane2 mit 400 MHz R12k Prozessor dauerte die komplette Verschweißung einer Rohkarosserie 45 Sekunden. Dabei wurden 248 694 finite Elemente in 285 Bauteilen untersucht, und 6829 Schweißpunkte wurden in Abständen um 50mm gesetzt. Kapitel 6 Veränderung von Bauteilen mittels Free-Form Deformation 6.1 Motivation Verformungen von Bauteilen des Finite-Elemente-Modells sind einerseits notwendig, um Inkonsistenzen wie Penetrationen, Perforationen und Lücken zu beseitigen. Andererseits dienen Deformationen dazu, schnell und einfach neue Bauteilgeometrien zu erhalten, um das Crash-Verhalten zu optimieren (vgl. 2.1). Insbesondere in der frühen Entwicklungsphase eines neuen Fahrzeugs stehen außerdem noch nicht alle Bauteile als CAD-Daten zur Verfügung. Um in dieser frühen Phase bereits FE-Simulationen durchführen zu können, werden FE-Bauteildaten des Vorgängermodells an die bereits vorhandenen Daten des neuen Modells angepasst, so dass ein berechenbares Gesamtmodell entsteht. Um einen effizienten Arbeitsablauf zu gewährleisten und so die Entwicklungszeiten zu verkürzen, soll der Berechnungsingenieur, der die Simulation durchführt, verschiedene Anpassungen des FE-Modells selbst durchführen können. Der zeitaufwändige Zyklus über den zuständigen Konstrukteur, um die CAD-Daten entsprechend zu verändern und das Bauteil neu zu vernetzen, entfällt damit. Eine Gruppe von Modifikation der FE-Modelle, die Behebung von Penetrationen und Perforationen durch automatische Bauteilumformungen, ist in Kapitel 3 beschrieben. Insbesondere bei Perforationen ist eine vollautomatische Behandlung jedoch nicht immer möglich. Auch für dieses Problem stellt die flexiblere Modifikation des FE-Modells eine Lösung dar. Die flexibelste Modifikation eines als FE-Netz dargestellten Bauteils ist das freie Verschieben einzelner Netzknoten. Oft sollen jedoch größere Regionen bearbeitet werden. In 78 Veränderung von Bauteilen mittels Free-Form Deformation vielen Fällen ist dabei ein möglichst fließender (stetiger) Übergang zwischen deformierter und nicht deformierter Region gewünscht. Die einzelnen Knoten werden in der Regel um geringe Beträge verschoben. Dennoch ist es für den Benutzer mühsam, eine größere Anzahl von Knoten exakt zu positionieren. Hierfür wurde in dieser Arbeit ein Verfahren eingesetzt, das Modifikationen auf beliebig großen Regionen mit geringem Benutzeraufwand durchführen kann. Dazu wurde das sogenannte Free-Form-Deformation Verfahren weiterentwickelt und an die speziellen Bedürfnisse der FE-Modellierung angepasst. 6.2 Grundlagen der Free-Form-Deformation Free-Form-Deformation (FFD) stellt ein generelleres geometrisches Verfahren zur Simulation von Deformationsvorgängen an Festkörpern dar [94]. Im Gegensatz zum achsbasierten Ansatz von Barr [6] stellt die von Sederberg und Parry entwickelte FFD-Methode [76] ein raumbasiertes Verfahren dar, mit dem polygonale oder durch Kontrollpunkte beschreibbare geometrische 3D-Modelle in Analogie zu Freiformflächen deformiert werden können. Die Grundidee der FFD ist es, zu deformierende, flexible Objekte vollständig mit einem geometrisch einfach zu beschreibenden Volumen zu umhüllen, in dem jeder ObjektKnotenpunkt eine eindeutige, parametrisch bestimmbare Position besitzt. Nach der Deformation des umgebenden Volumens kann über die Kenntnis der Deformationsparameter sowie der initialen Parametrisierung der Objekt-Knotenpunkte auf deren neue Position im Raum geschlossen werden. Anstelle der direkten Verformung von Objekten erfolgt also eine Verformung des Raumes, der diese Objekte umgibt (Abb. 6.1). Abbildung 6.1: Verformung eines Zylinders durch Free-Form Deformation Der von Sederberg und Parry vorgeschlagene Hüllkörper wird in allgemeiner Form durch ein Spat repräsentiert, wobei zur Vereinfachung stets ein Quader, als Spezialfall des Spats, 6.2 Grundlagen der Free-Form-Deformation 79 verwendet wird. Durch diesen Quader lässt sich ein lokales kartesisches Koordinatensystem definieren, dessen Ursprung in einem Eckpunkt liegt und dessen Koordinatenachsen durch die anliegenden Quaderkanten gegeben sind. Das Quadervolumen bildet den Deformationsbereich als FFD-Block (auch FFD-Volumen genannt), über den sich Objektpunktkoordinaten leicht in lokale Koordinaten überführen lassen. Ein FFD-Block zeichnet sich dadurch aus, dass er wiederum in einzelne Teilvolumen gegliedert ist, wobei diese zusätzliche Unterteilung die lokalen Ausmaße der Deformation bzgl. der im FFD-Block befindlichen Objekte vorgibt. Aus dieser Unterteilung ergibt sich, als wesentliche Komponente der Free-Form Deformation, eine initiale Gitterstruktur (lattice) mit einfacher Topologie. Ein kartesisches FFD-Gitter besteht aus sechsseitigen Gitterzellen, wobei jede Seite durch eine rechteckige Gitterfläche mit vier Gitterkanten und vier Gitterknoten beschrieben wird und jeder Gitterknoten maximal mit sechs Nachbarknoten verbunden ist. Je enger die Knoten beieinander liegen, desto genauer kann eine Deformation modelliert werden. Betrachtet man ein 3D Koordinatensystem mit dem Ursprung X0 und den drei durch ~ T~ , U ~ gegebenen Achsen, so beschreibt dieses Koordinatensystem ein ihre Basisvektoren S, Volumen, das sich aus l × m × n Gitterzellen zusammensetzt. Die lokalen Koordinaten s, t, u eines Objekt-Knotenpunktes P in diesem Koordinatensystem ergeben sich durch ~ + tT~ + uU ~ wobei 0 ≤ s, t, u ≤ 1 P = X 0 + sS (6.1) mittels dreier linearer Gleichungen: s= t= u= ~ )(P − X0 ) (T~ × U ~ )S ~ (T~ × U ~ ×U ~ )(P − X0 ) (S ~ ×U ~ )T~ (S (6.2) ~ × T~ )(P − X0 ) (S ~ × T~ )U ~ (S Der eigentliche Deformationsansatz von Sederberg und Parry basiert auf den geometrischen Zusammenhängen von Splinekurven bzw. deren Erweiterung auf den dreidimensionalen Raum [19]. Als Basisfunktionen dienen dabei Bernsteinpolynome n-ten Grades µ ¶ n i s (1 − s)n−i = s Bi−1,n−1 + (1 − s)Bi,n−1 (6.3) Bi,n (s) = i mit 0 ≤ s ≤ 1 und i ∈ {0, ..., n}. Diese Polynome besitzen die Eigenschaft, dass sie immer zwischen den Werten 0 und 1 liegen und ihre Summe über alle n stets 1 ergibt: 0 ≤ Bi,n (s) ≤ 1 n X Bi,n (s) = 1 i=0 (6.4) (6.5) 80 Veränderung von Bauteilen mittels Free-Form Deformation Die darauf aufbauenden, nach ihrem Erfinder benannten Bézier-Splines wurden bereits in den 1960-er Jahren in der Automobilindustrie angewendet, um Kurven und Flächen mathematisch zu beschreiben. Heute sind diese und andere Arten von Splines aus dem Computer Aided Design nicht mehr wegzudenken. Der Begriff Spline stammt ursprünglich aus dem Schiffsbau, wo mit elastischen Stäben aus Holz, Metall oder Kunststoff, Splines genannt, der Schiffsrumpf modelliert wurde. Zur Bestimmung der Lage eines Punktes P auf einer Bézierkurve vom Grad n sind n+1 Bernsteinpolynome Bi,n und Kontrollpunkte Ki (0 ≤ i ≤ n) erforderlich: P (s) = n X Bi,n (s)Ki (6.6) i=0 Die Kontrollpunkte sind, je nach Anwendung, meist Punkte in 2 oder in 3 . Die resultierende Kurve ist dann, entsprechend den Kontrollpunkten, zwei- oder dreidimensional. Die Stetigkeit einer allgemeinen Bézier-Kurve vom Grad n ist C n−1 . Für die meisten praktischen Anwendungen, wie auch bei der FFD, wird daher der Spline-Grad n = 3 angenommen, oft reicht auch ein Grad von n = 2. Abbildung 6.2 zeigt zwei Bézier-Kurven und Bernsteinpolynome unterschiedlichen Grades. Bernstein-Bézier-Splines 2. Grades Bernstein-Bézier-Splines 3. Grades Basisfunktionen: Bernstein-Polynome 1 0.25 0.5 0.75 Basisfunktionen: Bernstein-Polynome 1 1 0.25 Bézier-Kurve und Kontrollpunkte 3 0.5 0.75 1 Bézier-Kurve und Kontrollpunkte 3 4 4 Abbildung 6.2: Beispiele von Bézier Kurven und deren Basisfunktionen Durch einen Tensorproduktansatz erhält man den Ausdruck für die Punkte einer sogenannten Bézierfläche: P (s, t) = n X m X i=0 j=0 Bi,n (s)Bj,m (t)Ki,j mit 0 ≤ s, t ≤ 1 (6.7) 6.2 Grundlagen der Free-Form-Deformation 81 Bezierflächen mit dreidimensionalen Kontrollpunkten können beispielsweise für die Beschreibung von räumlichen Objekten verwendet werden. Mit zweidimensionalen Kontrollpunkten werden diese und andere Splines zum “Warping“ von Pixelbildern [92] verwendet (Abb. 6.3). Dies stellt eine Art zweidimensionale Variante des FFD-Verfahrens dar. Abbildung 6.3: 2D-Prinzip der FFD: Deformation des Raumes mit Verschiebung der darin enthaltenen (Objekt-)Punkte Sederberg und Parry nutzten diesen Zusammenhang zur Beschreibung von Punkten im 3D-Raum mittels trivariater Béziervolumen. Die Position eines Punktes P ergibt sich aus der Summe der Tensorprodukte dreier Bernsteinpolynome und den zugehörigen Kontrollpunkten, die durch ihre kartesischen Koordinaten gegeben sind. P (s, t, u) = l m X n X X i=0 j=0 k=0 Bi,n (s)Bj,m (t)Bk,l (u)Ki,j,k mit 0 ≤ s, t, u ≤ 1 (6.8) Das Produkt Bi,n (s)Bj,m (t)Bk,l (u) wird kurz als Bi,j,k (s, t, u) geschrieben: n,m,l P (s, t, u) = X Bi,j,k (s, t, u)Ki,j,k (6.9) i,j,k=0 oder in Matrix-Schreibweise: P = BK (6.10) mit der Matrix der Basisfunktionen B und der Kontrollpunktmatrix K. Um ein Objekt durch FFD zu verformen, müssen für jeden Vertex bzw. für jeden relevanten Punkt P des Objekts dessen Spline-Parameter s, t und u bestimmt werden. Aufgrund der regelmäßigen Anordnung der Kontrollpunkte in einem kartesischen Gitter ist 82 Veränderung von Bauteilen mittels Free-Form Deformation die Bestimmung der Spline-Parameter einfach, solange Bézier-Splinefunktionen verwendet werden. Bézier-Splines besitzen nämlich die Eigenschaft der linearen Präzision (vgl. [19]): n X i Bi,n (s) = s n i=0 (6.11) Mit anderen Worten: Sind die Kontrollpunkte äquidistant auf einer Geraden angeordnet, so läuft P (s) linear mit s die Kurve entlang (Abb. 6.4). Für das FFD-Verfahren hat dies Spline-Kurve mit linearer Präzision Spline-Kurve ohne lineare Präzision Abbildung 6.4: Lineare Präzision (Beispiel): Die farbigen Segmente sind Bilder gleichlanger Intervalle des Parameterbereiches. die Bedeutung, dass die Spline-Parameter s, t und u eines Punktes P im Bézier-Volumen sich durch lineare Interpolation bestimmen lassen (vgl. Beziehung (6.3)). 0 Werden einige Kontrollpunkte Ki,j,k durch den Benutzer an neue Positionen Ki,j,k verschoben, ergibt sich für einen Punkt P des eingebetteten Objekts eine Verschiebung zu der neuen Position P 0 : n,m,l 0 P (s, t, u) = X n,m,l 0 Bi,j,k (s, t, u)Ki,j,k i,j,k=0 = P (s, t, u) + = X Bi,j,k (s, t, u)(Ki,j,k + ∆Ki,j,k ) i,j,k=0 n,m,l X Bi,j,k (s, t, u)∆Ki,j,k (6.12) i,j,k=0 Aus Beziehung (6.12) folgt, dass es für die Berechnung einer Verformung ausreichend ist, diejenigen Spline-Basisfunktionen Bi,j,k zu berechnen, für die ∆Ki,j,k 6= ~0 gilt. Basisfunktionen Bi,j,k (s, t, u) müssen also nur dann ausgewertet werden, wenn der entsprechende Kontrollpunkt Ki,j,k bewegt wird. Zusammenfassend kann das Verfahren der Free-Form Deformation in folgende Schritte gegliedert werden: 1. Überlagerung einer regelmäßigen 3D Gitterstruktur in Form eines lokalen kartesischen Koordinatensystems über einen spat- bzw. quaderförmigen Ausschnitt des 3DRaumes, in dem sich das zu deformierende Objekt vollständig befindet. 6.2 Grundlagen der Free-Form-Deformation 83 2. Überführung der Objekt-Knotenpunkt in das lokale Koordinatensystem des FFDGitters. 3. Deformation des FFD-Blocks durch Verschiebung von Kontrollpunkten. 4. Berechnung der neuen Koordinaten für die betroffenen Objektknoten anhand der Kontrollpunktverschiebungen. Durch das FFD-Verfahren erschließt sich dem Benutzer eine große Palette von Möglichkeiten zur Bearbeitung dreidimensionaler Objekte. Speziell im Automobilbau, wo Splines eine lange Tradition haben, ist es naheliegend, auch Finite-Elemete-Modelle mit der Splinebasierten FFD-Methode zu bearbeiten. Mit dem FFD-Verfahren kann Spline-basierte Modellierung durchgeführt werden, selbst wenn das modellierte Objekt nicht mit Hilfe von Splines beschrieben wird. Im Rahmen dieser Arbeit wurden somit die Vorteile von Spline-Funktionen, wie z.B. deren Stetigkeit, erstmals bei der Bearbeitung von FE-Datensätzen angewendet. Das ursprüngliche FFD Verfahren nach Sederberg und Parry hat allerdings einige Nachteile: 1. Die große Anzahl von Kontrollpunkten ist schwer zu überschauen und verdeckt die Sicht auf das eigentliche Objekt, das es zu editieren gilt. 2. Oft liegen einige Kontrollpunkte im Inneren eines zu bearbeitenden Objekts und sind somit schwer zugänglich. 3. Die Auswirkungen einer Kontrollpunktverschiebung sind schwer nachvollziehbar. Die für eine vorgegebene Änderung am Objekt notwendigen KontrollpunktManipulationen sind nicht klar ersichtlich. 4. Die verwendeten Bernstein-Bézier-Splinefunktionen besitzen nicht die Eigenschaft der lokalen Kontrolle. Jede Verschiebung eines Kontrollpunktes kann auf dem gesamten Objekt (ungewünschte) Veränderungen bewirken. 5. Eine größere Auflösung des Kontroll(punkt)gitters für die Modellierung von Details erfordert eine Erhöhung des Spline-Polynomgrades (n, m, l) oder eine Aufteilung des FFD-Volumens in mehrere sogenannte Hyperpatches. Letzteres ist problematisch, weil spezielle Vorkehrungen zur Bewahrung der Stetigkeit an den Übergängen getroffen werden müssen, denn: 6. Am Rand eines FFD-Blocks ist kein stetiger Übergang zur benachbarten (d.h. von der Deformation nicht betroffenen) Umgebung gegeben. 7. Am Rand eines FFD-Blocks ist das Deformationsverhalten ein anderes als im Inneren des FFD-Blocks (Abb. 6.5). 84 Veränderung von Bauteilen mittels Free-Form Deformation 8. Es muss immer das gesamte Objekt in das FFD-Volumen eingebettet werden, auch wenn nur ein Teil davon verändert werden soll. Der Grund liegt in der fehlenden Stetigkeit an der Oberfläche des FFD-Blocks und in der fehlenden lokalen Kontrolle. Abbildung 6.5: Beispiel für inkonsistentes Deformationsverhalten bei Bézier-Splines und dessen Auswirkung auf FFD: Für eine vorgegebene Verschiebung eines Punktes des schwarz dargestellten Bauteils sind ungleiche Kontrollpunktverschiebungen notwendig, in Abhängigkeit davon, ob sich das Bauteil in Randnähe befindet oder im Inneren. Darüberhinaus ist die resultierende Form des Bauteils in den beiden Fällen unterschiedlich. Dieses unterschiedliche Verhalten der FFD in Randnähe ist nicht sinnvoll und für den Benutzer nicht nachvollziehbar. Die Probleme 1 bis 5 wurden später durch verwandte Arbeiten (z.B. DMFFD, siehe Abschnitt 6.4) gelöst. Durch die in der vorliegenden Arbeit vorgestellten Anpassungen des FFD-Verfahrens wurden die Schwachstellen 6 bis 8 ebenfalls beseitigt. Hierbei spielen BSplines eine wichtige Rolle und sollen deshalb im folgenden Abschnitt etwas näher erläutert werden. 6.3 Grundlagen der B-Splines B-Splines wurden erstmals im 19. Jahrhundert verwendet, als N. Lobachevsky einige spezielle B-Splines durch Faltungen von Wahrscheinlichkeitsverteilungen erhielt [67]. I.J.Schoenberg [73] verwendete B-Splines für die Glättung statistischer Daten. Gordon und Riesenfeld [30, 69] schlugen erstmals die Verwendung von B-Splines im Bereich der 6.3 Grundlagen der B-Splines 85 Computer-basierten geometrischen Modellierung vor. Ein bedeutender Name auf dem Gebiet der B-Splines ist de Boor, der wertvolle Ergebnisse über die Eigenschaften dieser Funktionen erarbeitete [16, 17, 18]. B-Splines können als eine Verallgemeinerung der Bézier-Splines betrachtet werden. Ist für einen gegebenen Grad n die Anzahl der Kontrollpunkte gleich n + 1, so ist die B-SplineKurve mit einer Bézier-Kurve identisch. Diese Feststellung gilt allerdings nur, insofern es sich um B-Splines handelt, bei denen sichergestellt ist, dass die Positionen der beiden äußeren Kontrollpunkte mit den Endpunkten der Kurve übereinstimmen. Man sagt dann, dass die Kurve die Endpunkte interpoliert. Diese häufig verwendete Kategorie von B-SplineKurven besitzt entweder n-fache äußere Kontrollpunkte, oder der Knotenvektor weist n + 1 gleiche Knoten an beiden Enden auf. Der Knotenvektor ist eine nichtfallende Folge von reellen Zahlen (s0 , ..., sh+2n ). h stellt hier die Anzahl der Spline-Segmente dar. Während Bézier-Kurven immer aus einem Segment bestehen, kann eine B-Spline-Kurve beliebig viele Segmente enthalten. Die Segmente einer allgemeinen B-Spline-Kurve haben an den Übergängen dieselbe Stetigkeit C n−1 wie die gesamte Kurve. Die Form eines Kurvensegments wird dabei von n + 1 Kontrollpunkten bestimmt. Jeder Kontrollpunkt hat einen lokal begrenzten Einfluss (auf höchstens n + 1 Kurvensegmente). Ausgehend von den Basisfunktionen 0-ten Grades ( 1 falls si ≤ s < si+1 , Ni,0 (s) = 0 sonst (6.13) werden die Basisfunktionen n-ten Grades rekursiv definiert: Ni,n (s) = si+n+1 − s s − si Ni,n−1 (s) + Ni+1,n−1 (s) si+n − si si+n+1 − si+1 (6.14) mit i ∈ {0, ..., p}, p = h + n − 1. Man bemerkt, dass Basisfunktionen niedrigeren Grades Ni,n−1 zur Berechnung zweier Basisfunktionen nächsthöheren Grades Ni−1,n und Ni,n verwendet werden. Zur effizienten Berechnung der Basisfunktionen nach (6.14) empfiehlt sich daher ein Aufbewahren der Zwischenergebnisse. Mit den h + n = p + 1 Basisfunktionen Ni,n und ebensovielen Kontrollpunkten Ki wird ein Punkt P der B-Spline-Kurve ähnlich wie bei Bézier-Kurven bestimmt: P (s) = p X Ni,n (s)Ki (6.15) i=0 Der Spline-Parameter s läuft hierbei, anders als bei Bézier-Kurven, zwischen den Werten sn und sn+h des Knotenvektors. Es gilt Ni,n (s) 6= 0 ⇔ s ∈ (si , si+n ) (6.16) 86 Veränderung von Bauteilen mittels Free-Form Deformation Grad 2, 4 Segmente, nicht-uniform 1 Grad 3, 4 Segmente, nicht-uniform 1 Basisfunktionen 1 2 3 Basisfunktionen 4 1 Knotenvektor mit 3-fachen Endknoten 3 2 3 4 Knotenvektor mit 4-fachen Endknoten 3 4 B-Spline-Kurve und Kontrollpunkte 4 B-Spline-Kurve und Kontrollpunkte Abbildung 6.6: B-Splines über einem Knotenvektor mit n+1-fachen Endknoten Grad 2, 4 Segmente, uniform 1 -2 Basisfunktionen 1 -1 2 3 4 5 6 Uniformer Knotenvektor B-Spline-Kurve und Kontrollpunkte Grad 3, 4 Segmente, uniform 1 -3 -2 -1 Basisfunktionen 1 2 3 4 5 6 7 Uniformer Knotenvektor B-Spline-Kurve und Kontrollpunkte Abbildung 6.7: B-Splines über einem uniformen Knotenvektor 6.4 Verwandte Arbeiten 87 Für ein s ∈ (si+n , si+n+1 ) müssen zur Berechnung des entsprechenden Kurvenpunktes P (s) bloß die n + 1 Basisfunktionen Ni bis Ni+n berechnet werden. Die restlichen Basisfunktionen sind gleich Null für s ∈ (si+n , si+n+1 ), und brauchen also nicht berechnet zu werden. Daraus folgt, dass allein die Positionen der n + 1 Kontrollpunkte Ki bis Ki+n für die Position von P (s) von Bedeutung sind, womit die Eigenschaft der lokalen Kontrolle nachgewiesen ist. Liegt der Kurvenpunkt P (s) genau an einer Segment-Grenze, d.h. s = s i mit i ∈ {n, h + n}, ist seine Lage sogar von nur n Kontrollpunkten abhängig. Abbildung 6.6 zeigt Beispiele von B-Spline-Kurven, bei deren Knotenvektoren die äußeren n+1 Knoten zusammenfallen. Abbildung 6.7 zeigt im Gegensatz dazu B-Spline-Kurven, die auf einem Knotenvektor mit gleichmäßig verteilten Knoten definiert sind. Hier stimmen die Enden der B-Spline-Kurve, anders als beim ersten Beispiel, nicht mit den äußeren Kontrollpunkten überein. 6.4 Verwandte Arbeiten Das FFD-Verfahren hat einen weiten Einsatzbereich, da es die Bearbeitung von Objekten weitgehend unabhängig von deren interner Repräsentation erlaubt. Daher wurde dieses Verfahren von zahlreichen Forschern aufgegriffen und verbessert. Die sogenannte Extended Free-Form Deformation (EFFD) von Coquillart [15] erlaubt durch die Verwendung unterschiedlich geformter (z.B. prismatischer oder zylindrischer) Gitterzellen eine größere Vielfalt bei der Wahl der Gittertopologien des FFD-Bereiches. Das EFFD-Verfahren lässt sich an beabsichtigte Deformationen anpassen, wobei es gegenüber der herkömmlichen FFD-Methode allerdings etwas an Flexibilität und Stabilität verliert [94]. MacCracken und Joy [56] erweitern das Verfahren auf Gitter beliebiger Topologie. Dabei wird eine an die Catmull-Clark Unterteilung angelehnte Technik zum Verfeinern des Gitters verwendet. Sowohl bei der FFD-Methode als auch bei der EFFD-Methode gestaltet sich die gezielte Deformation eines Objektes durch die vielen Kontrollpunkte recht schwierig. Für eine intuitive Deformation eignen sich diese Verfahren somit schlecht. Eine Erweiterung der FFD durch Hsu et al. [38] erlaubt die direkte Manipulation von Objekten (Direct Manipulation of FFD, DMFFD). Das DMFFD-Verfahren hat den entscheidenden Vorteil, dass der Benutzer das Spline-Kontrollgitter nicht bearbeiten, und auch nicht sehen muss. Er hat eine wesentlich direktere und intuitivere Kontrolle über das bearbeitete Objekt. Ein oder mehrere Objektpunkte können bei dem DMFFD-Verfahren mit Hilfe einer geeigneten Benutzerschnittstelle selektiert und an die gewünschte Position verschoben wer- 88 Veränderung von Bauteilen mittels Free-Form Deformation den1 . Die notwendige Bestimmung des Kontrollpunktversatzes erfolgt ausgehend von den neuen Positionen der Objektpunkte durch Lösen eines linearen Gleichungssystems. Je nach Anzahl der constraints, also der festgelegten Randbedingungen in Form von Punktverschiebungen, kann das Gleichungssystem unter- oder überbestimmt sein. Dann wird die beste Lösung (im Sinne von kleinsten quadratischen Abweichungen) durch Ermitteln einer pseudoinversen Matrix [89] ermittelt. Im unterbestimmten Fall gilt es, die kleinstmöglichen Verschiebungen der Kontrollpunkte zu ermitteln. Bei einem überbestimmten System, also wenn es eine große Zahl von Randbedingungen gibt, können die Randbedingungen nicht genau eingehalten werden. Dann wird die Kontrollpunkt-Konfiguration ermittelt, bei der die quadratischen Abweichungen von der Zielvorgabe insgesamt am kleinsten sind. Hsu et al. verwenden B-Splines [66] anstelle von Bézier-Splines. Anders als bei der Verwendung von Bézier-Splines ist bei B-Splines die Anzahl der Kontrollpunkte nicht an den Grad der Spline-Funktionen gebunden. So kann das FFD-Gitter verfeinert werden, ohne den Spline-Grad zu erhöhen. Jeder Kontrollpunkt beeinflusst nur einen genau festgelegten Bereich. Somit ist die Eigenschaft der lokalen Kontrolle gegeben (vgl. Abschnitt 6.3). Die von Hsu et al. verwendeten B-Splines haben jedoch, wie bei den meisten Arbeiten in diesem Bereich, sogenannte mehrfache Kontrollpunkte an den Rändern. Wie bei der Verwendung von Bézier-Splines liegen dadurch die äußeren Kontrollpunkte auf der Hülle des FFD-Blocks. Das Deformationsverhalten ist damit ebenfalls uneinheitlich, weil ortsabhängig, und es gibt keinen stetigen Übergang zur Umgebung des FFD-Blocks. Auch aus diesem Grund wird bei Hsu et al., wie bei den anderen verwandten Arbeiten, ein FFDVolumen verwendet, welches das gesamte Objekt umschließt. B-Splines mit mehrfachen Kontrollpunkten besitzen im Allgemeinen nicht die Eigenschaft der linearen Präzision (vgl. Beziehung (6.11) in Abschnitt 6.2). Deshalb muss für jeden verschobenen Objektpunkt eine Gleichung dritten Grades (bzw. vom Grad n der Spline-Basisfunktionen) gelöst werden, um die Spline-Parameter (s, t, u) des Punktes zu bestimmen. In [20] wird ein Verfahren beschrieben, das die lineare Präzision von B-Splines erzielt, indem die Kontrollpunkte gewichtet werden. Speziell bei n-fachen Kontrollpunkten wären jedoch unendlich große Gewichte nötig. Außerdem würden die Gewichte zu einem uneinheitlichen Verhalten der Deformation beitragen. Hu et al. [39] ermitteln mit Hilfe der Lagrange Funktion explizite Ausdrücke für die Verschiebung der Kontrollpunkte, so dass die Lösung eines Gleichungssystems durch Berechnen der Pseudoinversen Matrix entfällt. Außerdem werden in [39] einige nützliche Eigenschaften der DMFFD bewiesen. Insbesondere wird gezeigt, dass jede mehrfache Randbedingung 1 Die selektierten Punkte müssen nicht mit den Knoten (Vertices) der Objektdarstellung übereinstimmen. Prinzipiell ist es für DMFFD auch nicht erforderlich, dass die angegebenen Punkte auf der Objektoberfläche liegen. Für den Benutzer ist es jedoch einfacher und intuitiver, Punkte auf der Objektoberfläche anzugeben. 6.4 Verwandte Arbeiten 89 (multiple point constraint) zu dem gleichen Ergebnis führt wie eine sequentielle Bearbeitung von entsprechend vielen einfachen Randbedingungen (single point constraints). Dieses Ergebnis wird in der vorliegenden Arbeit aufgegriffen, um die Bedienung durch den Benutzer möglichst einfach zu gestalten. Gain und Dodgson [27] zerlegen die DMFFD in eine Sequenz von kleinen Deformationen, um die Selbst-Überschneidung des verformten Objekts zu verhindern. Eine SelbstÜberschneidung wäre in der Tat nicht mehr durch FFD zu beheben, wenn das FFDVolumen, das zu der Verformung mit Selbst-Überschneidung geführt hat, nach der Deformation verworfen wird. Bei der von Gain und Dodgson durchgeführten Zerlegung einer großen Deformation in eine Reihe von kleineren Teilschritten wird vor jedem dieser Teilschritte ein neues, undeformiertes FFD-Volumen angenommen. Dadurch werden Objektoberflächen, die sich nach einem oder mehreren Teilschritten nahe kommen, in Richtung der Deformation mitverschoben, so dass es zu keiner Überschneidung kommen kann. Die genaue Bestimmung der Schrittweite ist jedoch sehr rechenintensiv. Daher entwickelten Gain und Dodgson ein Näherungsverfahren, das im Zweifelsfall übervorsichtig entscheidet. Bei der Methode von Gain und Dodgson ist außerdem das Ergebnis der schrittweisen Deformation nachweislich ein anderes, als bei der normalen Deformation. Das ist verständlich, wenn man bedenkt, dass im einen Fall eine Überschneidung auftreten kann und im anderen nicht. Dennoch ist das von einer zur anderen Deformation unterschiedliche Verhalten für den Benutzer schwer nachzuvollziehen. Bei der Modellierung von FE-Modellen durch DMFFD, wie sie in der vorliegenden Arbeit vorgestellt wird, kommt es aufgrund der relativ kleinen Veränderungen, die durchgeführt werden müssen, nicht zu Selbstüberschneidungen. Führt dennoch eine Deformation zu Überschneidungen, so kann sie rückgängig gemacht werden und durch den Benutzer in mehreren Schritten ausgeführt werden. Noble und Clapworthy [62] verwenden ein FFD-Verfahren basierend auf der Veränderung der Gewichte von NURBS (Non-Uniform Rational B-Splines) [66]. Zwar steigen damit die Einflussmöglichkeiten des Benutzers auf das Ergebnis der Deformation, doch ist auch hier der Benutzer durch die Fülle von Einflussmöglichkeiten schnell überfordert. Tong et al. [87] betrachten die ursprünglich ebenen Polygone des zu bearbeitenden Objektes als getrimmte B-Spline Flächen. Bei der Deformation werden dann nicht nur die Vertices der Objekt-Polygone verschoben, sondern die als Spline-Flächen beschriebenen Polygone werden selbst deformiert. Die so erhaltenen Flächenbeschreibungen entsprechen dem Industriestandard STEP. Sie erlauben eine genauere Darstellung des Objekts, und können durch Tesselierung wieder in ein Polygonnetz umgewandelt werden, das nun an den gekrümmten Stellen feiner ist. So wird eine bessere Approximierung der gewünschten Deformation erreicht als bei der normalen FFD, wo nur die Positionen der bereits vorhandenen Objektknoten neu bestimmt werden. 90 Veränderung von Bauteilen mittels Free-Form Deformation Eine spezielle Hardware zur Beschleunigung von Free-Form Deformation stellt Chua und Neumann in [14] vor. Die Hardware stellt eine 3D-Erweiterung der bereits zum Standard gehörenden 1D- und 2D-Evaluatoren [93] für Splines dar. Allerdings handelt es sich bei der Arbeit von Chua und Neumann um theoretische Überlegungen, die bislang nicht in reale Hardware umgesetzt wurden. Durch die zunehmende Programmierbarkeit der Graphik Hardware ließe sich ein entsprechender 3D-Evaluator allerdings schon mit heutiger Hardware realisieren. Hierfür könnte die in [55] vorgestellte Vertex Engine verwendet werden, die bereits in kommerzieller Graphik-Hardware verfügbar ist. Der zukünftige OpenGL-Standard 2.0 [1] wird solche programmierbare Hardware ebenfalls unterstützen. Eine effiziente Implementierung vorausgesetzt, ist das FFD und das DMFFD Verfahren jedoch auch ohne Spezial-Hardware für die meisten Anwendungen hinreichend schnell. Bei der im Rahmen dieser Arbeit entwickelten DMFFD-Variante können einige 10000 Objektpunkte gleichzeitig bewegt werden, ohne dass es signifikante Verzögerungen (größer als 0.1s) gibt. FFD-ähnliche Verfahren wurden ebenfalls in [92] dargestellt. Hier geht es unter anderem um das Verzerren von Pixel-Bildern, wobei ein zweidimensionales Kontrollpunkt-Gitter und Catmull-Rom-Splines [12] zum Einsatz kommen. Anstelle von Pixel-Bilder können auch Voxel-basierte Volumendarstellungen manipuliert werden, wie in [54]. Westermann et al. benutzt hierfür Hardware-Unterstützung in [91], und Rezk-Salama et al. [68] stellen weitere Performance-Optimierungen vor. Kobbelt et al. [48, 46, 47, 45] entwickeln ein grundsätzlich verschiedenes Verfahren zur Deformation von 3D-Objekten. Dabei wird ein Bereich des Objektes markiert und verschoben. Um den verschobenen Bereich herum wird durch den Benutzer eine Region definiert, welche verändert werden darf, und die durch Energieminimierungsfunktionen (vgl. Abschnitt 3.4) einen stetigen Übergang zwischen dem verschobenen und dem unveränderten Bereich erzeugt (Abb. 6.8). Realisiert wurde dieses Verfahren bislang allerdings nur für Objekte, die durch Dreiecksnetze beschrieben sind. Außerdem ist eine hierarchische Repräsentation des Netzes mit mehreren Auflösungsstufen notwendig, damit Details trotz dem glättenden Effekt der Energieminimierung erhalten bleiben. 6.5 Explizite Berechnung der Verschiebungen Für ein dreidimensionales Tensorprodukt mit B-Spline-Graden p, q, r und n × m × l Kontrollpunkten Ki,j,k stellt sich das FFD-Volumen Q(s, t, u) wie folgt dar: n,m,l Q(s, t, u) = X i,j,k=0 Ri,j,k (s, t, u)Ki,j,k (6.17) 6.5 Explizite Berechnung der Verschiebungen 91 Abbildung 6.8: Anwendungsbeispiele von Kobbelts Multi-Resolution-Ansatz aus [48] mit der vereinfachenden Bezeichnung Ri,j,k (s, t, u) = Ni,p (s)Nj,q (t)Nk,r (u). Nun soll dieses Volumen so deformiert werden, dass ein Punkt S mit Spline-Parametern (sS , tS , uS ) an eine neue Position T bewegt wird. Diese single-point-constraint genannte Aufgabenstellung kommt in der Praxis häufig vor, und kann durch sequentielle Anwendung, wie Hu et al. [39] gezeigt haben, auch dazu verwendet werden um sogenannte multiple-pointconstraints, also die gleichzeitige Erfüllung mehrerer Startpunkt-Zielpunkt-Bedingungen zu bewerkstelligen. Es ist klar, dass der Benutzer durch die manuelle Verschiebung von Kontrollpunkten eine Verformung nur sehr ungenau durchführen kann. Das DMFFD Verfahren hingegen erreicht nicht nur eine exakte Neupositionierung ein oder mehrerer gegebener Punkte, sondern führt diese Aufgabe in optimaler, klar definierter Weise aus, nämlich so, dass die Gesamtverformung minimal ist. Als Maß dient hierbei die Summe der Quadrate aller Kontrollpunktverschiebungen; diese Summe gilt es zu minimieren. Während Hsu et al. [38] für jede DMFFD Operation ein Gleichungssystem durch Berechnung der Pseudoinversen Matrix lösen, geben Hu et al. [39] hierfür explizite Lösungsausdrücke mit Hilfe des Lagrange-Optimierungsverfahrens an. y x z Die gewünschten Kontrollpunktverschiebungen δi,j,k = (δi,j,k , δi,j,k , δi,j,k )T sollen gewähr- 92 Veränderung von Bauteilen mittels Free-Form Deformation leisten, dass n,m,l T = X n,m,l (Ki,j,k + δi,j,k )Ri,j,k (sS , tS , uS ) = S + i,j,k=0 X δi,j,k Ri,j,k (sS , tS , uS ) (6.18) i,j,k=0 Für eine Ein-Punkt-Verschiebung ist das Gleichungssystem unterbestimmt, es gibt eine große Anzahl von Lösungen. Eine denkbare, jedoch nicht sehr nützliche Lösung ist, alle Kontrollpunkte um den gleichen Vektor (T − S) zu verschieben. Eine andere Lösung wäre, nur den einen zu S nächstliegenden Kontrollpunkt so zu verschieben, dass der Punkt S an die Position von T gelangt. Eine sinnvollere Lösung ist jedoch, mehrere P Kontrollpunkte zu 2 verschieben, und dabei die Summe der Quadrate der Verschiebungen n,m,l i,j,k=0 kδi,j,k k zu minimieren. Die entsprechende Lagrange Funktion L kann wie folgt geschrieben werden: n,m,l n,m,l L= X i,j,k=0 kδi,j,k k2 + λ(T − S − X δi,j,k Ri,j,k (sS , tS , uS )) (6.19) i,j,k=0 mit dem Lagrange-Multiplikator λ = (λx , λy , λz )T . Für das gesuchte Minimum von L gilt ∂L ∂L ∂L = ∂λ = ∂λ = 0, was zu der bereits bekannten Beziehung (6.18) führt. Für das ∂λx y z gesuchte Minimum von L gilt außerdem ∂δ∂L = ∂δ∂L = ∂δ∂L = 0. Durch Lösen dieser y x z i,j,k i,j,k i,j,k Gleichungen resultiert λ (6.20) δi,j,k = Ri,j,k (sS , tS , uS ) 2 Mit Hilfe von (6.18) erhält man Pn,m,l T −S 2 i,j,k=0 Ri,j,k (sS , tS , uS ) = λ δi,j,k = 2 Ri,j,k (sS , tS , uS ) (6.21) Daraus ergibt sich der gesuchte explizite Ausdruck für die Verschiebungsvektoren der Kontrollpunkte Ri,j,k (sS , tS , uS ) (T − S) δi,j,k = Pn,m,l 2 R (s , t , u ) S S S i,j,k=0 i,j,k (6.22) Damit lässt sich die Verschiebung der Kontrollpunkte einfach und effizient berechnen. Abbildung 6.9 zeigt beispielhaft eine Ein-Punkt-Deformation mit B-Splines 4. Grades. Betrachtet man den Ausdruck (6.22) genauer, so bemerkt man folgendes: • maximal (p + 1) × (q + 1) × (r + 1) Terme δi,j,k sind ungleich ~0. (p, q, r := Splinegrade) • nur (maximal (p + 1) × (q + 1) × (r + 1)) Kontrollpunkte in einer Umgebung des Startpunktes S werden verschoben 6.5 Explizite Berechnung der Verschiebungen 93 Abbildung 6.9: Beispiel für die Verschiebung der Kontrollpunkte und die Verformung des Raumes durch DMFFD. Das Kontrollgitter ist hier durch weiße Linien dargestellt, Startbzw. Zielpunkt sowie die Verschiebungsrichtung werden durch den 3D-Zeiger angezeigt. • die Verschiebung eines Kontrollpunktes ist größer, wenn sich der Kontrollpunkt näher am Startpunkt S befindet • die Richtung aller Kontrollpunkt-Verschiebungen entspricht immer der Richtung des Vektors (T − S) Durch die Verschiebung der Kontrollpunkte wird, wie bereits erwähnt, nicht nur der Startpunkt S an die Position T gebracht. Die Punkte P des im FFD-Volumen eingebetteten Objekts werden, sofern sie in einer bestimmten Umgebung von S liegen, ebenfalls verschoben. So entsteht ein stetiger Übergang zwischen der verformten Region um den Startpunkt S und dem von S weiter entfernt liegenden und nicht verformten Bereich des Objekts. Für einen Objektpunkt P mit Spline-Koordinaten (sP , tP , uP ) wird die neue Position P daher wie folgt berechnet: 0 n,m,l P 0 = P+ X Ri,j,k (sP , tP , uP )δi,j,k i,j,k=0 = P+ Pn,m,l i,j,k=0 Ri,j,k (sP , tP , uP )Ri,j,k (sS , tS , uS ) (T − S) Pn,m,l 2 i,j,k=0 Ri,j,k (sS , tS , uS ) (6.23) Dabei brauchen nur diejenigen Terme der Summe im Zähler berücksichtigt zu werden, für welche Ri,j,k (sP , tP , uP ) 6= 0 und Ri,j,k (sS , tS , uS ) 6= 0. Da bekannt ist, welche der 94 Veränderung von Bauteilen mittels Free-Form Deformation V Legende: Startpunkt verschobener Kontrollpunkt V Objektknoten (Vertex) Kontrollpunkte mit Einfluss auf V verschobene Kp. mit Einfluss auf V Region beeinflusst durch die selben Kontrollpunkte Abbildung 6.10: Relevante Kontrollpunkte bei der DMFFD-Verschiebung eines Objektpunktes (Grad n = 2). Nur die zu den vier Kontrollpunkten ° gehörenden Basisfunktionen müssen bei der Verschiebung eines Objektpunktes neu berechnet werden. Basisfunktionen Ri,j,k (sS , tS , uS ) gleich Null sind, brauchen die entsprechenden Ausdrücke Ri,j,k (sP , tP , uP ) nicht berechnet zu werden. Bei der Berechnung von P 0 sind also nur die Basisfunktionen Ri,j,k (...), von Bedeutung, deren entsprechende Kontrollpunkte Ki,j,k sowohl die Position von S, als auch die Position von P beeinflussen (Abb. 6.10). Je weiter der Punkt P von S entfernt ist, umso weniger Basisfunktionen müssen berechnet werden, und umso weniger aufwändig ist somit die Berechnung von dessen neuer Position P 0 . 6.6 Überlegungen zur Bearbeitung von FE-Modellen mittels DMFFD Bei der Implementierung des DMFFD Verfahrens zur Deformation von Finite-ElementeModellen spielten folgende Überlegungen eine Rolle: 6.7 Verwendung eines temporären Kontrollgitters 95 1. Finite Elemente dürfen nicht allzu sehr deformiert werden, um die Genauigkeit der FE-Simulation nicht zu gefährden. 2. Das Deformationsverhalten soll nicht von der Vorgeschichte, also von vorhergehenden Deformationen abhängen. Auch soll keine zusätzliche Information, etwa das zugehörige Kontrollgitter, dauerhaft gespeichert werden müssen. 3. Das Deformationsverhalten soll unabhängig von der räumlichen Position des Startpunktes sein. Die Forderung von Punkt 1 ist erfüllt, solange die Deformation, d.h. der Abstand zwischen Startpunkt S und Zielpunkt T , relativ klein ist, beziehungsweise wenn der Einflussbereich, bestimmt durch die Dichte der Kontrollpunkte, hinreichend groß ist, so dass sich die Deformation auf eine große Anzahl von Elementen verteilt. Da für das Preprocessing zumeist geringfügige Modifikationen ausreichen, ist die Verzerrung von Elementen kein großes Problem. Falls nötig, kann mit dem Relaxationsalgorithmus aus Abschnitt 3.4 die Verzerrung der Elemente verringert werden. Für die Zukunft gibt es dennoch Überlegungen, die Neuvernetzung der deformierten Region durchzuführen, was größere Änderungen des FE-Modells ermöglichen würde. Weiterhin könnte die maximal zulässige Verformung vorab bestimmt werden, um Durchdringungen mit anderen Bauteilen oder eine zu große Elementverzerrung zu verhindern. Dieses Vorgehen würde besonders in Verbindung mit einem haptischen Eingabegerät von Vorteil sein. Die Forderungen 2 und 3 sind nicht FE-spezifisch. Ihre Erfüllung ist deshalb auch in anderen Anwendungsgebieten von Nutzen, insbesondere da sich bis jetzt keine anderen Arbeiten auf diesem Gebiet damit beschäftigen. In den folgenden Abschnitten werden Anpassungen des DMFFD Verfahrens vorgestellt, welche neben der Erfüllung obiger Forderungen noch weitere Vorteile mit sich bringen. 6.7 Verwendung eines temporären Kontrollgitters Bei den in Abschnitt 6.4 erwähnten FFD-verwandten Arbeiten werden Deformationen sequentiell auf ein und demselben Kontrollgitter vorgenommen. Das Kontrollgitter wird immer verzerrter und unregelmäßiger. Beim einfachen FFD verliert der Benutzer angesichts der vielen Kontrollpunkte schnell den Überblick. Bei DMFFD braucht sich der Benutzer zwar nicht mit dem Kontrollgitter zu beschäftigen, jedoch weist ein FFD-Volumen, dessen Kontrollpunkte bereits verschoben wurden, ein anderes Verhalten auf als im Falle eines regelmäßigen, unveränderten Gitters. Der Grund liegt darin, dass die ursprünglichen Spline-Parameter (sP , tP , uP ) eines Objektpunktes P zusammen mit dem Kontrollgitter beibehalten werden. Es wird also die 96 Veränderung von Bauteilen mittels Free-Form Deformation Position von Objektpunkten geändert, ohne die Spline-Parameter dieser Punkte zu aktualisieren. Für den Benutzer ist die Änderung im Deformationsverhalten nicht nachvollziehbar. Bei der Implementierung der hier vorgestellten Ergebnisse wurde deshalb dazu übergegangen, für jede FFD-Operation ein neues, unverzerrtes Kontrollgitter zu verwenden. Damit ist das Verhalten der DMFFD vollkommen unabhängig von den vorhergehenden Deformationen. Es spielt also keine Rolle mehr, ob ein Objekt durch DMFFD in die aktuelle Form gebracht wurde, oder ob es schon beim Erstellen oder beim Einlesen diese Form hatte. Damit wird die Bearbeitung für den Benutzer einfacher, weil das Ergebnis der DMFFD nun vorhersehbarer ist. Es gibt zwar Argumente, die für eine Beibehaltung des Kontrollgitters über mehrere Operationen hinweg folgende Argumente gesprochen hätten: • Die Spline-Parameter (sP , tP , uP ) jedes Objektpunktes P brauchen nicht für jede FFD-Operation neu berechnet zu werden, auch wenn P bereits durch vorhergehende DMFFD Operationen verschoben wurde. Wenn die verwendeten Spline-Funktionen die Eigenschaft der linearen Präzision aufweisen, ist die Neuberechnung dieser SplineParameter jedoch nicht aufwändig. • Die Zusammensetzung von DMFFD durch schrittweise Verschiebung eines Startpunktes bildet über der Menge der DMFFDs eine kommutative Gruppe. Dies bringt insbesondere die folgenden Eigenschaften mit sich: • Die DMFFD-Verschiebung eines Startpunktes S an eine Position T1 , und anschließend dessen Verschiebung an eine Position T2 , führt zu der gleichen Verformung des manipulierten Objekts, wie wenn der Startpunkt S direkt an seine Endposition T 2 verschoben worden wäre. Diese Eigenschaft ist jedoch zur Deformation von Objekten nicht zwingend nötig. Vielmehr widerspiegelt sie die Abhängigkeit des Deformationsverhaltens von der Vorgeschichte. • Jede DMFFD-Operation kann rückgängig gemacht werden, indem der Punkt mit der Position T zurück in die Ausgangslage S gebracht wird. Wird das Kontrollgitter nicht beibehalten, ist jedoch ein rückgängigmachen dennoch möglich, wenn die ursprünglichen Koordinaten der Objektknoten im Speicher aufbewahrt werden. Bei Objekten, die durch finite Elemente dargestellt sind, ist die Anzahl der Knoten nicht so gross, dass zeitliche oder speichermäßige Grenzen überschritten würden. Ergänzend sei hier noch angemerkt, dass in bestimmten Fällen die Umkehrbarkeit der DMFFD auch nach Verwerfen des Kontrollgitters, zumindest annähernd, besteht. Ist das FFD-Volumen in Deformationsrichtung (T − S) gemessen relativ gross, dann ist die Invertierbarkeit der DMFFD näherungsweise gegeben, weil in diesem Fall für kleine Deformationen die Änderung der Spline-Parameter vernachlässigbar ist, d.h. (sS , tS , uS ) ≈ (sT , tT , uT ) und damit auch (sP , tP , uP ) ≈ (sP 0 , tP 0 , uP 0 ). Das Ersetzen des FFD-Volumens und des 6.8 Verwendung von B-Splines über uniformem Knotenvektor 97 Kontrollgitters fällt also kaum ins Gewicht, wenn das Ausmaß der Deformation verglichen mit dem FFD-Volumen sehr klein ist. Wenn beispielsweise die Deformation eines Bleches orthogonal zu dessen Oberfläche geschieht, so ist die dritte Dimension des FFD-Volumens, gegeben durch die Deformationsrichtung, relativ frei wählbar, und somit lassen sich die Voraussetzungen für die Invertierbarkeit erreichen. In der vorliegenden Arbeit hat sich allerdings das Rückgängigmachen der DMFFD-Operationen durch das Aufbewahren der ursprünglichen Koordinaten als hinreichend erwiesen. Da jeder Nachteil der obigen Liste umgangen werden kann, gibt es für eine Beibehaltung des Kontrollgitters also keinen zwingenden Grund. In Verbindung mit weiteren, im Folgenden vorgestellten Modifizierungen des DMFFD-Verfahrens ergibt sich zudem ein großes Potential für Vereinfachung und Performanzsteigerung. 6.8 Verwendung von B-Splines über uniformem Knotenvektor Es wurde bereits erwähnt, dass bei der FFD-Methode B-Splines den Bézier-Splines vorzuziehen sind, da erstere die Eigenschaft der lokalen Kontrolle besitzen. Entsprechend werden B-Splines auch in verschiedenen FFD-bezogenen Arbeiten verwendet (vgl. Abschnitt 6.4). Die dort verwendeten B-Splines interpolieren jedoch die äußeren Kontrollpunkte. Ein geringer Vorteil davon ist, dass die äußeren Kontrollpunkte sich exakt auf der Außenhülle des FFD-Volumens befinden. Speziell beim DMFFD-Verfahren, wo die Kontrollpunkte den Benutzer nicht interessieren, ist dies allerdings bloß für die Implementierung, und nicht bei der Nutzung des Verfahrens von Bedeutung. Ein Nachteil bei interpolierten Randknoten ist das uneinheitliche Deformationsverhalten in Randnähe. Außerdem ist die Forderung nach der linearen Präzision nicht erfüllt, was die Berechnung der Spline-Parameter für sämtliche zu verschiebende Objektpunkte erschwert, insbesondere wenn diese nach jeder Deformation aufgrund eines neuen Kontrollgitters aktualisiert werden müssen. Diese beiden Nachteile können vermieden werden, wenn B-Splines über gleichmäßigem (uniformem) Knotenvektor verwendet werden. Das bedeutet hier, dass sämtliche Knoten (s0 , ..., sh+2n ) äquidistant zu deren Nachbarknoten liegen. Insbesondere gibt es keine zwei Knoten an derselben Position2 . B-Splines über uniformem Knotenvektor bieten ein gleichmäßiges (d.h. ortsunabhängiges) Deformationsverhalten und die Eigenschaft der linearen Präzision. Bei regelmäßig auf 2 Einige Autoren bezeichenen im Gegensatz dazu einen Knotenvektor auch dann als gleichmäßig (uniform), wenn an den Enden n + 1 Knoten dieselbe Position haben, d.h. wenn die äußeren Kontrollpunkte interpoliert werden 98 Veränderung von Bauteilen mittels Free-Form Deformation einer Geraden angeordneten Kontrollpunkten einer B-Spline-Kurve über uniformem Knotenvektor entspricht dabei ein Spline-Kurvensegment, also die Abbildung des Parameterbereiches [si , ss+1 ], n ≤ i ≤ n + h, der Strecke zwischen zwei benachbarten Kontrollpunkten. Diese Strecke wird linear, d.h. mit gleichmäßiger Geschwindigkeit bezogen auf den SplineParameter s durchlaufen. Da für die Definition von h Spline-Segmenten h + n Kontrollpunkte verwendet werden, und bei der obigen Aufstellung jedes Segment den Raum zwischen zwei benachbarten Kontrollpunkten ausfüllt, liegen die äußeren Kontrollpunkte nicht auf dem Bild der BSpline-Funktion. Bei der Verwendung von B-Splines über uniformem Knotenvektor bei der FFD liegen somit die äußeren Kontrollpunkte (zumindest für Spline-Grad n ≥ 2) außerhalb des FFD-Volumens. Das FFD-Volumen ist in jeder Dimension um n − 1 KontrollpunktAbstände kleiner als die Hülle des Kontrollgitters. Bei einem regelmäßigen FFD-Kontrollgitter ist das Abbild P (s, t, u) eines Parameterwertes (s, t, u) wegen der linearen Präzision linear abhängig von s, t und u. Die für das FFD-Transformieren eines Punktes P benötigten Spline-Parameter sP , tP und uP lassen sich somit durch lineare Interpolation bestimmen und es entfällt das aufwändige Lösen von Gleichungen n-ten Grades. 6.9 Verwendung eines lokalen FFD-Volumens Die Eigenschaft der lokalen Kontrolle und das ortsunabhängige Deformationsverhalten wurde in der vorliegenden Arbeit für eine weitere Vereinfachung genutzt: Es reicht nun aus, das FFD-Volumen auf die tatsächlich deformierte Region zu beschränken. Da das Kontrollgitter nach jeder Deformation verworfen wird, muss nur der Bereich, welcher von der aktuellen DMFFD-Operation betroffen ist, von dem FFD-Volumen eingeschlossen sein. Um die Bedienung möglichst einfach zu halten, werden in der vorliegenden Arbeit bloß DMFFD-Operationen betrachtet, die durch das Verschieben eines einzelnen Objektpunktes definiert sind (single-point constraints). Dies stellt keine signifikante Einschränkung dar, weil die Forderung nach dem gleichzeitigen Verschieben mehrerer gegebener Objektpunkte durch das sequentielle Verschieben der einzelnen Punkte erfüllt werden kann. Für eine Ein-Punkt-Deformation (single point constraint) wird ein FFD-Volumen mit (3n + 1) × (3m + 1) × (3l + 1) Kontrollpunkten verwendet, wobei n, m, l die Spline-Grade in der jeweiligen Dimension darstellen. Meist werden Splines gleichen Grades in allen drei Dimensionen verwendet, so dass n = m = l. In diesem Fall sind insgesamt (3n + 1)3 Kontrollpunkte nötig. Prinzipiell könnte man mit nur (3n)3 Kontrollpunkten auskommen. In diesem Fall befindet sich der Startpunkt genau auf einer Spline-Segmentgrenze. Dadurch verringert sich die Anzahl der von Null verschiedenen Basisfunktionen, und damit auch die Anzahl der 6.9 Verwendung eines lokalen FFD-Volumens 99 relevanten Kontrollpunkte. Diese Variante wurde in der vorliegenden Arbeit ebenfalls implementiert. Sie hat sich aber als weniger geeignet erwiesen, weil damit die Krümmung einer deformierten Ebene ungleichmäßiger ausfällt, als bei der Variante mit (3n + 1)3 Kontrollpunkten (Abb. 6.11). Von den 3n+1 Kontrollpunkten in jeder Dimension werden nur n+1 durch die DMFFD verschoben, gemäß Beziehung (6.22). Da sich ein verschobener Kontrollpunkt auf n + 1 Spline-Segmente auswirkt, sind in jeder Richtung noch weitere n Kontrollpunkte nötig (das ergibt insgesamt die oben erwähnten 3n + 1 Kontrollpunkte) um ein FFD-Volumen zu definieren, das die deformierte Region exakt begrenzt. Die in dieser Arbeit verwendeten BSplines über gleichmäßigem Knotenvektor gewährleisten einen stetigen Übergang zwischen deformierter und nicht-deformierter Region. Neben der einfacheren Berechnung hat ein lokal begrenztes FFD-Volumen den Vorteil, dass es optimal an die anstehende Deformation angepasst ist. Der Detaillierungsgrad der Deformation, bedingt durch den Kontrollpunktabstand bzw. durch die Größe des bearbeiteten Bereiches, lässt sich so stufenlos einstellen. Frühere oder spätere FFD-Operationen sind nun vollkommen unabhängig, da jede Operation ihr eigenes Kontrollgitter hat. Die optimale Anpassung des FFD-Volumens an eine einzige Ein-Punkt-Deformation impliziert auch, dass jedes FFD-Volumen um den jeweiligen Startpunkt herum zentriert ist. Für die Berechnung der Deformation bedeutet dies, dass die Spline-Parameter des Startpunktes S konstant sind: (sS , tS , uS ) = ( 21 , 21 , 12 ). Damit sind auch die Basisfunktionen Ri,j,k (sS , tS , uS ) aus Beziehung (6.22) und (6.23) konstant und müssen also nicht erneut berechnet werden. Für den Benutzer bedeutet das Zentrieren des FFD-Volumens um den Startpunkt herum, dass das Deformationsverhalten auch keine geringfügigen Unterschiede in Abhängigkeit des gewählten Startpunktes aufweist. Beim herkömmlichen DMFFD-Verfahren ist die Lage des Startpunktes in Bezug auf das Kontrollgitter dem Zufall überlassen. Solange sich der Startpunkt in einer bestimmten Zelle des Kontrollgitters befindet, ist der deformierte Bereich zwar gleich, die Kontrollpunktverschiebungen δi,j,k (s. Beziehung (6.22)) ändern sich jedoch mit den Spine-Parametern (sS , tS , uS ), und damit verändert sich ebenfalls die Deformationscharakteristik. Durch ein lokales und temporäres FFD-Volumen, das immer um den Startpunkt zentriert ist, lassen sich diese Unzulänglichkeiten vermeiden und ein konsistentes Deformationsverhalten ist sichergestellt, unabhängig von der Position des Startpunktes. Nach dem Zentrieren des FFD-Volumens um den Startpunkt stellt sich die Frage nach dessen Ausrichtung. Bei einem würfelförmigen Volumen ist die Ausrichtung weniger relevant, weil hier die Region signifikanter Änderung annähernd sphärisch ist. Dann kann ein achsenparalleles Volumen verwendet werden. Soll jedoch die Krümmung der Deformation in einer Dimension geringer ausfallen, müssen die Ausmaße des FFD-Volumens in dieser Dimension vergrößert werden. Bei Bedarf kann so die Deformation auf nur eine Dimension des FFD-Volumens beschränkt werden (Abb. 6.12). 100 Veränderung von Bauteilen mittels Free-Form Deformation Abbildung 6.11: Deformationsverhalten und Anordung der Kontrollpunkte bei Ein-PunktVerschiebungen. Oben: Grad 2, 63 Kontrollpunkte. Mitte: Grad 2, 73 Kontrollpunkte. Unten: Grad 3, 103 Kontrollpunkte. 6.9 Verwendung eines lokalen FFD-Volumens 101 Abbildung 6.12: Beschränkung der Deformation auf eine Dimension (Beispiel). Soll ein nicht-achsenparalleles Volumen verwendet werden, ist dessen Ausrichtung an der Deformationsrichtung (S - T ), gegeben durch Startpunkt S und Zielpunkt T , sinnvoll. Der übrige Freiheitsgrad, gegeben durch die Rotation um (S - T ), wird vom Benutzer festgelegt. Eine automatische Festlegung nach diversen Kriterien entspricht in der Regel nicht dem Wunsch des Benutzers. Die räumliche Region, die von einer Ein-Punkt-DMFFD-Verschiebung mit kartesischem Kontrollpunktgitter betroffen ist, entspricht in ihrer Form einem Quader (vgl. Abb. 6.11, rechte Spalte). Die Region, in der wahrnehmbare Verschiebungen der Objektpunkte stattfinden, ähnelt jedoch eher einem Ellipsoid. Bei würfelförmigem FFD-Volumen wird das Ellipsoid zu einer Kugel. In Abbildung 6.11 ist ein ursprünglich ebenes Bauteil nach einer Verschiebung mit Startpunkt in der Mitte des Bauteils. Die Ränder des Bauteils liegen auf der Grenze des FFD-Volumens, also des deformierten Bereiches. Farblich markiert sind rechts die Regionen, wo Objektpunktverschiebungen größer als 1% der Startpunktverschiebung stattfinden. Hier sieht man deutlich, dass der Bereich der signifiganten Veränderungen rund ist, der Rest der quadratischen Deformationsregion wird kaum verändert. Es wurde gezeigt, dass bei der Verschiebung eines Punktes von der Ausgangsposition S an die neue Position T durch das DMFFD-Verfahren alle betroffenen Objektknoten entlang der gleichen Richtung (T − S) bewegt werden (Beziehung (6.22) in Abschnitt 6.5). Je weiter ein Objektknoten vom Startpunkt S entfernt ist, um so geringer ist seine Verschiebung durch DMFFD. Wenn nun, wie oben erwähnt, ein an (T − S) ausgerichtetes FFD-Volumen verwendet wird, so ist die Deformation achssymmetrisch und annähernd rotationssymmetrisch, mit 102 Veränderung von Bauteilen mittels Free-Form Deformation der Symmetrieachse (T − S). Statt mit Hilfe eines Spline-Tensorprodukts N i (s)Nj (t)Nk (u) lässt sich eine DMFFD-Operation daher mit Spline-Funktionen über eindimensionalem Parametergebiet Ni (s) beschreiben. Beziehung (6.22) wird damit zu wobei sS = folglich 1 . 2 Ni (sS ) (T − S) δi = P n 2 i=0 Ni (sS ) (6.24) Die neue Position P 0 eines durch DMFFD verschobenen Punktes P ist 0 P =P+ n X δi Ni (sP ) (6.25) i=0 Der Spline-Parameter sP des Punktes P wird nun in Abhängigkeit des Abstandes zwischen Punkt P und Startpunkt S, sowie abhängig vom Radius r in Richtung (P − S) der nun ellipsoidalen Deformationsregion wie folgt berechnet: sP = r − |P − S| 2r (6.26) Durch die Verwendung von eindimensionalen Spline-Funktionen an Stelle von Tensorprodukten vereinfacht sich die Berechnung, da nun weniger Spline-Basisfunktionen berechnet werden müssen. Darüberhinaus ist die resultierende sphärische oder ellipsoidale Deformationsregion sinnvoller als eine Würfel- oder Quader-förmige, weil auch bei letzteren die Region, in der signifikante Veränderungen stattfinden, annähernd sphärisch bzw. ellipsoidal ist. Um die Eigenschaft der linearen Präzision zu gewährleisten, musste bei der DMFFD mit Tensorprodukten ein fester Abstand zwischen den Kontrollpunkten bestehen. Dadurch war es nicht möglich, ein unsymmetrisches FFD-Volumen zu benutzen, also eine DMFFDOperation mit unterschiedlichem Aktionsradius in entgegengesetzte Richtungen. Bei Verwendung von eindimensionalen Spline-Funktionen nach Beziehung (6.25) ist der Radius r prinzipiell für jede räumliche Richtung frei definierbar. In der Praxis ist eine Festlegung von maximal sechs Werten für den Radius entlang von drei orthogonalen Hauptachsen, jeweils in positiver und negativer Richtung, sinnvoll. Mit einem solchen unsymmetrischen Deformationsbereich eröffnen sich neue Möglichkeiten. So ist es nun möglich, den häufig vorkommenden Fall der Streckung oder Stauchung eines Bauteils innerhalb eines durch zwei parallele Ebenen gegebenen Bereiches durchzuführen. Dazu wird der Startpunkt auf eine der beiden Ebenen gelegt. Der Deformationsradius zur anderen Ebene hin entspricht dem Abstand zwischen den beiden Ebenen. Die Radien in die verbleibenden 5 Hauptrichtungen werden auf sehr große Werte gesetzt, so daß in diesen Richtungen keine Verformung stattfindet. 6.10 Die Benutzerschnittstelle 103 Durch ein Verschieben des Startpunktes zur anderen Ebene hin wird das Bauteil zwischen den beiden Ebenen gestaucht, bei umgekehrter Verschiebung wird das Bauteil gedehnt. Der Halbraum jenseits des Startpunktes wird dabei nicht verformt, aber mit dem Startpunkt mitverschoben. Für die meisten Anwendungen ist eine lineare Dehnung oder Stauchung am sinnvollsten. Um diese zu gewährleisten wird der Spline-Grad auf n = 1 gesetzt. Durch die Verwendung von eindimensionalen Spline-Funktionen mit abstandsabhängigem Spline-Parameter wird auch ein weiteres Anwendungsszenario erschlossen: das Verschieben (Translatieren) eines Bereiches, gegeben durch eine zusammenhängende Menge von benachbarten Objektknoten (Abb. 6.13). r2 r1 Abbildung 6.13: Verschieben eines Bereiches unter Beibehaltung seiner Form, mit Splineförmigem Übergang zur unveränderten Umgebung. Im Prinzip lässt sich dieses Problem auch als Mehr-Punkt-DMFFD betrachten und iterativ lösen. Unter Verwendung eindimensionaler Spline-Funktionen gelangt man jedoch schneller zu einer Lösung, da keine Iteration nötig ist. Die gegebene Objektregion wird einfach entsprechend den Vorgaben verschoben, und die restlichen Objektknoten nach Beziehung (6.25) bewegt. Da jetzt nicht nur ein einziger Startpunkt S, sondern eine Menge von Punkten Si (i = 1, ..., imax ) verschoben wird, ist Beziehung (6.26) entsprechend anzupassen: sP = 6.10 r − min(|P − Si |) 2r (6.27) Die Benutzerschnittstelle Hsu et al. [38], die Erfinder des DMFFD-Verfahrens, zählten den Entwurf einer geeigneten Schnittstelle zu den noch ungelösten Aufgaben. In der Tat ist es schwierig, eine intuitiv zu bedienende Benutzerschnittstelle zu entwerfen, welche auch die Spezifikation von mehrfachen Bedingungen (multiple point constraints) erlaubt. Nachdem Hu et al. [39] gezeigt haben, dass sich mehrfache Bedingungen durch eine Sequenz von einfachen Bedingungen darstellen lassen, lässt sich die Benutzerschnittstelle 104 Veränderung von Bauteilen mittels Free-Form Deformation entsprechend vereinfachen. Die Definition einer Ein-Punkt-Bedingung ist für den Benutzer einfacher, und selbst eine Sequenz solcher Bedingungen bleibt für den Benutzer überschaubar, weil er visuelles Feedback über die Auswirkung der einzelnen Punktverschiebungen erhält. Beobachtet man die Auswirkung einer Ein-Punkt-DMFFD-Operation auf eine Objektoberfläche, so kann man eine Ähnlichkeit mit der Verformung eines Bleches mit einem Gummihammer feststellen. Die in der vorliegenden Arbeit entwickelte Benutzerschnittstelle nutzt diese Ähnlichkeit zwischen Realität und DMFFD-Modellierung. Durch die Metapher des Gummihammers kann der Benutzer mit geringem Einarbeitungsaufwand Bauteile auf ähnliche Weise bearbeiten, wie es bei realen Bauteilen der Fall ist. Bei der Arbeit am virtuellen Objekt hat der Benutzer zusätzlich die Möglichkeit, Werkzeugparameter vorab einzustellen, und so die Genauigkeit der Bearbeitung zu gewährleisten. So kann z.B. das Ausmaß der Verformung, also die Kraft des virtuellen Hammers, einfach und dennoch genau festgelegt werden. Um nicht aufwändig Werte in Dialogfelder anzugeben oder ungenau mit der Maus den Startpunkt zu verschieben, wird ein anderer Weg gegangen. Mit der Maus wird der Startpunkt angegeben, das Ausmaß der Verformung wird dabei jedoch durch Drücken einer Taste angegeben, oder vorab durch einen Button festgelegt. So kann z.B. die Taste “1“ eine Verschiebung um 1 mm bedeuten, usw., wobei dieser Wert zwecks Flexibilität noch zusätzlich mit einem einstellbaren Skalierungsfaktor multipliziert wird. Die Verschiebung geschieht dabei immer vom Betrachter weg, wie das auch bei einem realen Hammer der Fall ist. Auf Wunsch kann durch Drücken einer Hilfstaste die Verschiebung umgekehrt werden, so dass sich der Startpunkt also in Richtung des Betrachters veschiebt. Entspricht das Ergebnis nicht den Erwartungen, kann die Operation rückgängig gemacht werden. Zu diesem Zweck werden vor der Durchführung einer DMFFD-Operation die Koordinaten der Objektknoten aufbewahrt, so dass der Ausgangszustand wieder hergestellt werden kann. Die Richtung, entlang welcher der Startpunkt verschoben wird, entspricht im Regelfall der Oberflächennormalen am Startpunkt. Bei Bedarf kann die Verschiebungsrichtung frei definiert werden, sei es durch Festlegung zweier Objektpunkte mit Hilfe der Maus, sei es durch Aufbewahren einer Oberflächennormalen für die weitere Verwendung, oder aufwändiger, aber am flexibelsten, durch die zahlenmäßige Angabe der Normalen. Bei der Dehnung oder Stauchung eines Bauteils ist es oft nötig, dass die Verformungsrichtung auf der Oberfläche des Bauteils liegt. Eine solche Verformungsrichtung kann durch die Angabe zweier Punkte oder durch die Projektion einer vorher spezifizierten Richtung auf die Bauteiloberfläche angegeben werden. Weiterhin kann der Aktionsradius der DMFFD festgelegt werden, sowie der SplineGrad, abhängig von den in Abschnitt 6.9 beschriebenen Anwendungsszenarien. Sofern der Anwender es wünscht, wird der Deformationsbereich und die Deformationsrichtung jeweils 6.10 Die Benutzerschnittstelle 105 Abbildung 6.14: Benutzerschnittstelle für DMFFD an der aktuellen Position des Mauszeigers dreidimensional dargestellt. Durch dieses visuelle Feedback lässt sich das Ergebnis der DMFFD-Operation gut abschätzen, so dass unerwünschte Ergebnisse vermieden werden. Abbildung 6.14 zeigt die Benutzeroberfläche zur Anwendung der DMFFD. Zu sehen ist, links, ein 3D-Zeiger, welcher Startpunkt und Deformationsrichtung anzeigt. Außerdem wird mit roten Linien die zu deformierende Region markiert. Die im Bild zu sehende Perforation wurde durch eine einzige DMFFD-Operation behoben. Das linke Bauteil, das hier unter dem Zeiger zu sehen ist, wurde hierbei allerdings, um seine ebene Form zu erhalten, nicht verändert. Stattdessen wurde es ausgeblendet, und eine DMFFD-Operation in umgekehrter Richtung am darunterliegenden Bauteil wurde ausgeführt. 106 6.11 Veränderung von Bauteilen mittels Free-Form Deformation Justierung des Abstandes von Flanschen Das DMFFD-Verfahren hat einen breiten Einsatzbereich. Durch mehrfache Anwendung und Festlegung des Aktionsradius – falls nötig auf einen sehr kleinen Wert – kann prinzipiell jede Art von Verformung erzeugt werden. Eine vielfache Anwendung kann jedoch mühsam sein. Daher empfiehlt es sich, häufig wiederkehrende Aufgaben zu automatisieren. Damit wird der Einsatzbereich der DMFFD noch erweitert. Eine häufig auftretende Anforderung ist das Verändern des Abstandes zwischen Bauteilen. Ein Grund dafür kann in der Veränderung eines von zwei benachbarten Bauteilen durch den Konstrukteur liegen. Ein anderer häufiger Grund ist die Diskretisierung der Bauteilgeometrie im Rahmen der Vernetzung. Dadurch kann es zu den in Kapitel 3 besprochenen Penetrationen und Perforationen kommen. Doch auch ohne Durchdringungen kann es sein, dass der Bauteilabstand zu klein ist, oder aber zu groß, z.B. um an der betreffenden Stelle Verbindungselemente zu definieren. Wo zwei Bauteile verbunden werden, hat in der Regel mindestens eines der beiden Teile einen Flansch. Dieser Flansch kann mit Hilfe des Vorgehens aus Kapitel 4 und 5 erkannt werden. Der Algorithmus bedarf allerdings einiger Modifikationen. Ging es bisher darum, die Mittellinie eines Flansches zu bestimmen, so ist nun die Menge aller Elemente, und schließlich die Menge bestehend aus deren Knoten gefragt. Diese Knoten gilt es zu verschieben, um den Abstand anzupassen. Der modifizierte Algorithmus ist einfacher als der Algorithmus für die automatische Definition von Schweißpunktlinien. Dort musste ein Pfad aus Elementen gebildet werden, welcher längs zum Flansch verlief. Hier kann in ähnlicher Weise, ausgehend von einem Startelement, die Menge aller benachbarten Flanschelemente bestimmt werden. Als vereinfachter Programmcode sieht der Algorithmus wie folgt aus: /*** Methode flangeElements liefert alle Elemente eines Flansches ***/ list<Elements> flangeElements(Element startElement) { // startElement sollte zum Flansch gehören if (startElement.isNotFlange()) return empty_list; list<Elements> resultList; // resultList enthält alle bereits gefundenen Flanschelemente resultList.add(startElement); for (int index = 0; index < resultList.length(); index++) { Element element = resultList[index]; // prüfe Nachbarn der bereits gefundenen Flanschelemente for (each neighbour of element) if (neighbour.notChecked()) { if (neighbour.isFlange()) resultList.append(neighbour); // neues Element ggf. eintragen 6.11 Justierung des Abstandes von Flanschen 107 neighbour.markAsChecked(); // und stets als besucht markieren } } return resultList; } Wie in Kapitel 4, Abbildung 4.1, können auch hier die Flansch-Elemente als Knoten eines Baumgraphen betrachtet werden. Ausgehend von der Wurzel des Baumes, dem Startelement, wird der Graph in breadth-first Art traversiert, und alle gefundenen Flanschelemente in eine Liste eingetragen. Je weiter ein Element vom Startelement entfernt ist, um so später ist es in der Liste zu finden. Eine Rückverfolgung des Pfades zum Startelement, wie bei der Bestimmung der Mittellinie in Kapitel 5, ist hier nicht nötig. Nachdem die Liste aller Flanschelemente aufgestellt wurde, soll nun der Abstand des Flansches zum benachbarten Bauteil gemessen werden. Der Abstand kann nur an endlich vielen Stellen gemessen werden, und es ist sinnvoll, ihn zumindest an den Knoten des Flansches zu messen, weil es die Knoten sind, die verschoben werden können und die Form des Flansches bestimmen. Deshalb wird im nächsten Schritt die Menge aller Knoten bestimmt, die zu mindestens einem Flanschelement gehören. Speziell bei stark gekrümmten Bauteilen kann es unzureichend sein, den Abstand bloß an den Flanschknoten zu messen und zu korrigieren. Optional können daher auch die Elementmittelpunkte und sogar die Kantenmittelpunkte berücksichtigt werden. Alternativ oder zusätzlich können auch die Abstände an den entsprechenden Knoten des Nachbarbauteils berücksichtigt werden. Zwar werden schließlich nur Elementknoten des Flansches verschoben, doch als Startpunkt für das DMFFD-Verfahren kann jeder Punkt dienen. Allerdings konvergiert der Justierungsalgorithmus langsamer, wenn die Anzahl der zu berücksichtigenden Abstände steigt. Um die Anforderungen der Praxis zu widerspiegeln, und um das Verfahren zu beschleunigen, kann festgelegt werden, ob der Abstand mindestens, höchstens, oder genau dem gewünschten Betrag entsprechen soll. Dabei kann auch die erlaubte Abweichung vom gewünschten Wert, also die Toleranz, angegeben werden. Für diejenigen Punkte, welche das Abstandskriterium nicht erfüllen, wird durch Projektion eine Verschiebungsrichtung ermittelt. Auf dieser Projektionsgeraden soll der betreffende Punkt dann so weit verschoben werden, bis das Abstandskriterium erfüllt ist. Solange nur die Abstände gemessen an den Knoten der Flanschelemente berücksichtigt werden, könnte man sich prinzipiell daraus beschränken, diese Knoten zu verschieben, ganz ohne Free-Form Deformation. Ein Grund für die Anwendung der DMFFD ist jedoch, dass ein kontinuierlicher Übergang zwischen der deformierten und der unveränderten Region erzeugt wird. Es werden also auch einige Knoten außerhalb des Flansches verschoben. Eine anschließende Gitterrelaxation ist daher in der Regel nicht notwendig. Auch der Flansch selbst bleibt relativ glatt, denn es findet eine Mittelung der unterschiedlichen Verschiebungsanforderungen statt, bedingt durch überlappende FFD-Volumen bei der Behandlung naheliegender Punkte. 108 Veränderung von Bauteilen mittels Free-Form Deformation Für ein optimales Ergebnis werden die Abstände der betreffenden Punkte schrittweise angepasst. Durch die überlappenden FFD-Volumen bei naheliegenden Punkten kann es zu widersprüchlichen Anforderungen kommen. Durch eine wiederholte Verschiebung der Punkte in kleinen Schritten werden die Anforderungen dennoch erfüllt. Die Justierung des Abstandes von Flanschen kann auch als multi-constraint DMFFDProblem angesehen werden, und durch Lösen eines linearen Gleichungssystems behandelt werden. Aufgrund der Vielzahl von zu berücksichtigenden Punkten ist dies Gleichungssystem jedoch überbestimmt. Die Abstandskriterien können damit nur dann vollständig erfüllt werden, wenn ein extrem feines Kontrollgitter verwendet wird. Mit einem solchen Gitter ist jedoch der deformierte Bereich recht klein, und naheliegende FE-Knoten werden nicht mehr mitbewegt um einen stetigen Übergang zu erhalten. Das iterative Anwenden unabhängiger DMFFD Operationen mit lokalem und temporärem Kontrollgitter, wie in dieser Arbeit beschrieben, gewährleistet hingegen eine Lösung nach einer endlichen Anzahl von Iterationen und eine flexible Größe des verformten Bereiches. Als iteratives Verfahren ist es mit einem gewissen Berechnungsaufwand verbunden und kann deshalb bei einer großen Anzahl zu berücksichtigender Punkte bei großem Deformationsbereich einige Sekunden in Anspruch nehmen. Doch es darf nicht vergessen werden, dass es sich bei der herkömmlichen Methode, dem Lösen eines überbestimmten Gleichungssystems, ebenfalls um ein iteratives Verfahren handelt. Abbildung 6.15 zeigt ein Ergebnis des hier vorgestellten Verfahrens zur Justierung des Abstandes von Flanschen. Durch das Anpassen des Abstandes zwischen dem Flansch und dem darunterliegenden Bauteil werden gleichzeitig auch Perforationen, Penetrationen und übergroße Abstände beseitigt. In Abbildung 6.16 ist ein weiteres Anwendungsbeispiel zu sehen. Im Ausgangszustand existieren mehrere große Perforationen entlang des relativ langen Flansches. Prüfkriterium ist hier der Abstand der Knoten, sowie der Element- und Kantenmittelpunkte des Flansches bezüglich des anderen Bauteiles. Nach einer Iteration ist bereits der Großteil der Perforationen beseitigt. Nach zwei Iterationen sind sämtliche Perforationen verschwunden. Für Flansche ist dies Verfahren somit in der Regel schneller und zuverlässiger als die Beseitigung von Perforationen aus Abschnitt 3.3. Einige weitere Iterationen können angewandt werden, um den Abstand des Flansches zum anderen Bauteil auf einen gewünschten Wert zu bringen. Alternativ kann jetzt, nach der Beseitigung der Perforationen, der Bauteilabstand mit Hilfe des Verfahrens zur Behebung der Penetrationen (Abschnitt 3.6) angepaßt werden. 6.12 Zusammenfassung 109 Spalt Perforation vorher nachher Abbildung 6.15: Beseitigung von Perforationen und übergroßen Bauteilabständen durch Justierung des Abstandes von Flanschen. 6.12 Zusammenfassung Das als Direct Manipulation of Free-Form Deformation bekannte Verfahren wurde im Rahmen dieser Arbeit untersucht und weiterentwickelt, um den Anforderungen nach Bedienbarkeit und Effizienz zu entsprechen. Im Wesentlichen wurden dazu folgende Änderungen durchgeführt: • Die Deformation des Objektes wird explizit berechnet, anstatt ein Gleichungssystem iterativ zu lösen. Dazu wurden die Ergebnisse von Hu et al. [39] verwendet. • Jeder Deformation liegt nun ein neues, undeformiertes Kontrollgitter zugrunde. Das Verhalten der DMFFD ist jetzt unabhängig von vorhergegangenen Deformationen. • Anstelle der in bisherigen Arbeiten verwendeten Bézier- bzw. B-Splines mit interpolierten Kontrollpunkten an den Enden werden hier B-Splines über uniformem Knotenvektor verwendet. Damit wird der Unterschied im Deformationsverhalten im Randbereich des FFD-Volumens eliminiert. Neben dem zeitlichen ist damit auch das räumliche Deformationsverhalten gleichmäßig. Durch die lineare Präzision der verwendeten Spline-Funktionen ist die Berechnung weniger aufwändig, das Verfahren wird schneller. 110 Veränderung von Bauteilen mittels Free-Form Deformation Abbildung 6.16: Beseitigung von Perforationen durch Justierung des Abstandes auf einem längeren Flansch. Oben: Ausgangszustand. Mitte: Nach einer Iteration. Unten: Nach zwei Iterationen • Das FFD-Volumen kann jetzt, aufgrund der vorhergehenden Änderungen, auf den tatsächlich deformierten Bereich beschränkt werden. • Das FFD-Volumen wird um den Startpunkt herum zentriert. Dadurch wird die Berechnung der Kontrollpunktverschiebungen wesentlich vereinfacht und damit schneller. Darüberhinaus ist damit die letzte Quelle für Ungleichmäßigkeiten im Deformationsverhalten eliminiert, weil die Position des Startpunktes relativ zum Kontrollgitter nun konstant ist. • Der Radius des Deformationsbereiches kann nun in den drei Hauptrichtungen des quaderförmigen FFD-Volumens frei angegeben werden, unabhängig von früheren oder 6.12 Zusammenfassung 111 späteren DMFFD-Operationen, und ohne dass der Benutzer Kontrollpunkte einfügen oder entfernen muss. • Die Verwendung eindimensionaler Spline-Fuktionen anstelle des Tensorprodukts bringt zusätzliche Vereinfachung und Flexibilität. • Die Benutzerschnittstelle erlaubt mit Hilfe der Gummihammer-Metapher ein schnelles und genaues Bearbeiten des Objekts. • Für verschiedene Anwendungen, wie das Anpassen des Abstandes von Flanschen, kann das DMFFD-Verfahren automatisch und iterativ angewendet werden. In der vorliegenden Arbeit wurde dieses verbesserte DMFFD-Verfahren für die Bearbeitung von Karosseriebauteilen in FE-Repräsentation verwendet. Das Verfahren lässt sich jedoch für jede Art von Objekten anwenden, welche durch ein Polygonnetz repräsentiert sind. Für Objekte, welche im Gegensatz dazu durch Spline-Flächen oder ähnliches dargestellt sind, ist eine DMFFD-Modellierung ohnehin nicht notwendig. Hier ist eine direkte Bearbeitung der Spline-Flächen, z.B. durch Verschiebung von deren Kontrollpunkten, sinnvoller. 112 Veränderung von Bauteilen mittels Free-Form Deformation Kapitel 7 Massentrimm Bei der Crash-Simulation nach der FE-Methode wird das Fahrzeug, genauer die einzelnen Bauteile, durch ein Gitter aus linearen Elementen dargestellt. Nichttragende Teile, zum Beispiel Batterie, Kabelbaum, diverse Aggregate und Betriebsflüssigkeiten brauchen nicht durch finite Elemente dargestellt zu werden. Durch das Vernachlässigen der Geometrie von nichttragenden Teilen werden also Rechnerressourcen gespart. Bis jetzt sind solche nichttragenden Teile durch den Berechnungsingenieur im Rahmen des Massentrimms auf die benachbarte Bauteile “verschmiert” worden, d.h. die Masse der umliegenden Teile wurde anteilmäßig erhöht. So wurde das Fehlen der nichttragenden Teile im Modell näherungsweise kompensiert. Da nun das Simulationsprogramm die Möglichkeit bietet, nichttragende Teile als speziellen Elementtyp in der Eingabedatei zu spezifizieren, wird die Simulation genauer. Außerdem entfällt das zeitaufwändige und fehlerträchtige Verschmieren der Masse von Hand. Die neuen Elemente werden als strukturlose Massen (nonstructural masses) bezeichnet. Für die Simulation relevant sind bei den strukturlosen Massen allein die Masse und die Bauteile, auf welche diese Masse verteilt wird. Will man die strukturlosen Massen jedoch visualisieren, so ist es notwendig, zumindest deren Position, also den Schwerpunkt des nichttragenden Teils zu kennen. Ferner ist es wünschenswert, dass die Visualisierung einen Hinweis gibt auf die Bauteilform, die der strukturlosen Masse zugrundeliegt. Da aber weder Geometrie noch Schwerpunkt bei der Simulationsberechnung verwendet wird, ist es erstrebenswert, diese Information möglichst kompakt zu speichern. Eine Möglichkeit wäre, die Geometrie als Bounding Box vereinfacht darzustellen. Bei einem Teil wie dem Kabelbaum wäre dies jedoch nachteilhaft, da hier die Bounding Box sehr groß ist und praktisch das gesamte Fahrzeug umschließt. In Absprache mit den Konstruktionsingenieuren wurde deshalb vereinbart, Informationen über die Trägheitseigenschaften abzuspeichern. Von Interesse sind dabei die Hauptträgheitsmomente und die Hauptträgheitsachsen. Daraus kann der Konstruktionsingenieur Rückschlüsse ziehen über die Art des dargestellten Teils und dessen Einfluss auf das CrashVerhalten. Hauptträgheitsmomente und -achsen können in dem Trägheitstensor kompakt 114 Massentrimm abgespeichert werden. Der Trägheitstensor ist eine symmetrische 3x3 Matrix, es sind also nur 6 Werte abzuspeichern [32]. Der Trägheitstensor ist für die meisten Bauteile bereits bekannt, kann aber auch ohne großen Aufwand berechnet werden. Die Hauptträgheitsmomente erhält man, indem man die Eigenwerte des Trägheitstensors berechnet. Die Eigenvektoren des Trägheitstensors sind die Hauptträgheitsachsen. Zusammen mit dem Schwerpunkt (xs , ys , zs ) des nichttragenden Bauteils sind also 9 Fließkommawerte zu speichern, welche allein der Visualisierung dienen und nicht in die Simulation eingehen. Diese Werte werden als Zeichenkette kodiert in einem Textfeld abgespeichert, so dass sie die Simulation nicht beeinflussen, bei der Visualisierung mit crashViewer jedoch ausgewertet und editiert werden können. Die Hauptträgheitsachsen eines Körpers stellen die Hauptachsen des sogenannten Trägheitsellipsoids dar. Daher liegt es nahe, das Trägheitsellipsoid als Glyph zur Visualisierung der strukturlosen Massen heranzuziehen. Die Darstellung durch ein Ellipsoid bringt jedoch einige Nachteile mit sich. Insbesondere sind bei der Darstellung eines Ellipsoids am Bildschirm die Hauptachsen nicht immer leicht zu erkennen. Außerdem benötigt eine ansprechende Darstellung des Ellipsoids am Bildschirm eine feine Tesselierung, was den Bildaufbau verlangsamt. Daher wird hier das Trägheitsellipsoid nur bei Bedarf angezeigt. Im Regelfall wird hingegen ein dreidimensionales Achsenkreuz für die Visualisierung der Trägheitseigenschaften verwendet. Das Kreuz wird dargestellt durch drei längliche, zueinander senkrechte Quader. Die Orientierung der Quader stimmt mit den Hauptträgheitsachsen überein. Die Quaderlänge ist proportional zu den Hauptträgheitsmomenten. Der Mittelpunkt der Quader befindet sich im Schwerpunkt des nichttragenden Bauteils (Abbildung 7.1). Zusätzlich zu den Trägheitsachsen wird auch die Masse des dargestellten Bauteils visualisiert. Dies geschieht durch eine Kugel deren Mitte dem Bauteilschwerpunkt entspricht, und deren Volumen zu der dargestellten Masse proportional ist. Diese Kugel benötigt keine feine Darstellung, da es allein auf das Volumen ankommt. Durch das Kugelvolumen lässt sich sehr intuitiv die Masse visualisieren. Auch hier zeigt sich, dass es sinnvoll ist, auf die Darstellung des Trägheitsellipsoids zu verzichten, da sich die beiden Geometrien gegenseitig verdecken würden. Neben der Visualisierung der im Datensatz vorhandenen strukturlosen Massen hat der Benutzer die Möglichkeit, neue strukturlose Massen anzulegen. Die Parameter der neuen oder bereits vorhandenen Massen, nämlich Schwerpunkt, Trägheitstensor und Masse können interaktiv editiert werden. Die Bauteile, auf welche die Masse verschmiert werden soll, können spezifiziert werden und werden visuell hervorgehoben. Für Testzwecke kann auch im crashViewer die Masse auf die betreffenden Bauteile verschmiert werden. Auch können die Trägheitseigenschaften eines beliebigen Bauteils berechnet und visualisiert werden (Abbildung 7.2). Massentrimm 115 Abbildung 7.1: Visualisierung von vier strukturlosen Massen durch 3D-Glyphen. Für die jeweils selektierte Masse werden die betroffenen Bauteile als Drahtgitter visualisiert. Abbildung 7.2: Visualisierung eines Bauteils zusammen mit dessen Trägheitseigenschaften.. 116 Massentrimm Kapitel 8 Integration 8.1 Motivation Bei der Karosserieentwicklung werden eine Vielzahl von Software-Tools eingesetzt: BauteilDatenbanken, Vernetzer, Pre- und Postprocessing-Tools, Finite-Elemente-Solver, LoadBalancing usw. Jedes dieser Tools besitzt eine unterschiedliche Benutzerschnittstelle; Eingabe- und Ergebnisdaten werden über ein gemeinsames Dateisystem ausgetauscht. Der Berechnungsingenieur, welcher die Crash-Simulationen durchführt, muss daher mit der Bedienung einer großen Anzahl von Anwendungen vertraut sein. Darüberhinaus muss er sich um die Verwaltung der Dateien kümmern, welche von einer Anwendung erzeugt wurden und als Eingabe für die nächste Anwendung dienen. Speziell bei der Visualisierung von Ergebnissen der Crash-Simulation spielt noch ein anderer Aspekt eine Rolle: Weil die Crash-Simulation eine beträchtliche Zeit in Anspruch nimmt, ist es wünschenswert, schon während der Simulation die bereits berechneten Ergebnisse untersuchen zu können. So kann eine Simulation vorzeitig abgebrochen werden, um Zeit zu sparen, sobald sich abzeichnet, dass keine neuen Erkenntnisse zu erwarten sind. Dieses Steuern der Simulation in Abhängigkeit von den Zwischenergebnissen wird als Simulation Steering bezeichnet. Simulation und Visualisierung werden integriert, die Visualisierung wird nicht mehr nach, sondern während der Simulation ausgeführt [40, 65]. Der eingesetzte FE-Solver PAM-CRASH erlaubt, Zwischenergebnisse in eine Datei zu schreiben. Dazu muss der Benutzer eine kleine Textdatei anlegen, welche ein bestimmtes Schlüsselwort enhält. Das aktuelle Zwischenergebnis wird dann nach dem Beenden des laufenden Simulationsschrittes, also nach einigen Minuten, in einer Datei bereitgestellt. Diese Datei kann dann zur Visualisierung durch eine entsprechende Anwendung eingelesen werden. Weil diese Vorgehensweise für den Benutzer recht aufwändig ist, wurde in Zusammenarbeit mit dem Hersteller des Simulationscodes, der ESI Group, eine Schnittstelle entworfen 118 Integration und realisiert, welche eine direkte Kommunikation zwischen Simulation und Visualisierung ermöglicht. Die Kommunikation kann sowohl lokal als auch über ein Netzwerk erfolgen; sie basiert auf dem objektorientierten CORBA-Protokoll. Durch die direkte Kommunikation zwischen Simulation und Visualisierung wird die Vorgehensweise bei der Crash-Simulation vereinfacht und die Effizienz gesteigert. Eine effiziente Crash-Simulation ermöglicht eine Verkürzung der Entwicklungszeiten neuer Fahrzeugmodelle und stellt somit einen wichtigen Wettbewerbsvorteil in dem stark umkämpften Automobilmarkt dar. Doch nicht nur Simulation und Visualisierung wurden im Rahmen der vorliegenden Arbeit zusammengeführt. Das prototypische Pre- und Postprocessingtool der Universität Stuttgart CrashViewer, heute als FEMod weiterentwickelt, wurde in die von BMW in Auftrag gegebene, Web-basierte Integrationsumgebung CAE-Bench eingebettet. Bei dieser EAI (Enterprise Application Integration) spielt CORBA eine bedeutende Rolle, ebenso wie ein spezielles, im Rahmen der vorliegenden Arbeit entwickeltes Java Applet, das in die CAE-Bench Web-Seiten eingebettet wird. Das Java Applet gewährleistet die Kommunikation zwischen der Integrationsplattform auf der einen und dem Visualisierungstool auf der anderen Seite. 8.2 CORBA Grundlagen CORBA, die Common Object Request Broker Architecture wurde von der Object Management Group1 (OMG), einem Standardisierungsgremium mit mehr als 700 Mitgliedern, 1991 in der ersten Version definiert. CORBA [63] war eine Antwort auf die starke Zunahme von Hardware- und Software-Produkten: Ziel war es, eine Middleware zu schaffen, welche eine orts-, plattform- und implementations-unabhängige Kommunikation zwischen Applikationen erlaubt. Wirklich interessant geworden ist CORBA seit der Verabschiedung der Version 2.0 im Dezember 1994. Diese Version brachte das Kommunikationsprotokoll IIOP, welches den Informationsaustausch zwischen Object Request Brokern (ORBs) verschiedener Hersteller und vor allem auch über das Internet ermöglicht. ORBs sind die technischen Implementationen des Standards CORBA. Ein ORB ermöglicht es einem Client, eine Meldung transparent an ein Serverobjekt zu senden, wobei das Serverobjekt auf derselben oder einer anderen Maschine laufen kann. Der ORB ist dafür zuständig, das Serverobjekt zu finden, dort die Funktion aufzurufen, die Parameter zu übergeben und das Resultat an den Client zurückzureichen. Dadurch wird die bereits erwähnte nahtlose Interoperabilität zwischen Applikationen erreicht, welche in einem völlig heterogenen Umfeld betrieben werden können. 1 http://www.omg.org 8.2 CORBA Grundlagen 119 Bisher wurde in einem heterogenen Umfeld typischerweise jede Schnittstelle spezifisch programmiert. Dabei müssen Plattform, Betriebssystem, Programmiersprache und anderes in Betracht gezogen werden. Bei Änderungen ist die Anpassung solcher Schnittstellen entsprechend schwerfällig. Bei CORBA-basierenden Systemen ist dies anders. Es besteht eine strikte Trennung zwischen der Schnittstellendefinition eines Objektes und deren Implementation. Beim CORBA-Vorgehen wird zunächst die öffentliche Schnittstelle eines Objektes (d.h. die Funktionen) in der Interface Definition Language (IDL) definiert. Plattform A, Sprache X Plattform B, Sprache Y IDL Methoden−Aufruf, Parameter Ergebnis Corba Stubs Corba−Client Corba Skeletons et rn−ORBl e t r co InInteoto OP P r II Objekt Impl. Corba−Server Corba Services (Naming Service, Event Service...) Abbildung 8.1: Die CORBA Client-Server Architektur IDL ist eine implementations-unabhängige Beschreibungssprache. Die IDL-Schnittstelle kann mit Hilfe eines IDL-Compilers für eine Vielzahl von Programmiersprachen auf Stubs und Skeletons abgebildet werden. Stubs sind Client- und Skeletons sind Server-seitige, computergenerierte Programmgerüste. Anschließend wird dieses Programmgerüst ausprogrammiert, und zwar sowohl für den Client als auch für den Server-Teil. Dabei kann der Client beispielsweise in Java implementiert werden, während der Server in C++ programmiert wird (Abbildung 8.1). Für weitere Einzelheiten sei auf die vielfältige Literatur zu diesem Thema verwiesen [7, 59, 78, 34, 9]. Die wichtigsten Vorteile von CORBA sind, kurzgefasst, die folgenden: • Hardware-, Betriebssystem- und Sprachunabhängigkeit: Sie gewährleisten die Portierbarkeit und die Wiederverwendbarkeit des erstellten Programmcodes • Offenheit: Durch den ORB können Programme verschiedener Hersteller zusammenarbeiten. • Verteilungstransparenz: CORBA-Objekte greifen auf entfernten Objekte mit den gleichen Mechanismen wie auf lokale Objekte zu. Für den Client bleibt der Aufenthaltsort des Objektes in der Regel unbekannt. 120 Integration • Objektorientierung: Objekte sind die grundlegenden Einheiten der Architektur. Dabei ist ein Objekt eine beliebige identifizierbare Einheit. • Effizienz: Es sind effiziente Implementationen möglich, die z.B. im Falle rein lokaler Kommunikation dem traditionellen Funktionsaufruf nur unwesentlich nachstehen. Der Funktionsumfang von CORBA kann durch die Verwendung von CORBA Services erweitert werden. Der wichtigste ist der Naming Service. Er stellt eine Art Datenbank dar, bei der CORBA-Server-Objekte angemeldet werden können, um von CORBA-ClientObjekten auf einfache Weise referenziert zu werden. Als Client-Objekt wird ein Objekt bezeichnet, welches Methoden eines anderen aufruft. Ein Server-Objekt ist eines, dessen Methoden aufgerufen werden. CORBA-Objekte können daher Server und Client in einem darstellen, wenn sie in ihrer CORBA/IDL-Schnittstelle Methoden zum Aufruf durch andere Objekte bereitstellen, sowie ihrerseits Methoden der CORBA/IDL-Schnittstelle anderer Objekte aufrufen. 8.3 Verwandte Arbeiten Eine Reihe von Forschungsaktivitäten beschäftigen sich mit der CORBA-basierten Software-Integration. TENT (TEstbed for Numerical Turbines) [74, 43, 64, 22] ist eine vom Deutschen Zentrum für Luft- und Raumfahrt (DLR) und der Fraunhofergesellschaft entwickelte Integrationsumgebung. TENT wird im Bereich der Strömungssimulation eingesetzt, wo es eine in Java implementierte graphische Benutzerschnittstelle zur Steuerung der eingesetzten Softwarekomponenten bietet. Verbindungen zwischen Softwarekomponenten werden graphisch dargestellt und können editiert werden, ähnlich wie z.B. bei den Visualisierungsanwendungen AVS/Express [4] oder IRIS Explorer [60]. Für Datentransfers und für die Kommunikation zwischen Komponenten wird CORBA verwendet. Anders als CAE-Bench ist TENT nicht Web-basiert. Die Einbindung einer PDM (Product Data Management) Datenbank ist bislang nicht möglich. Kein Ersatz für CAEBench ist TENT auch wegen seines verschiedenen Konzepts und seiner unterschiedlichen Zielsetzung. Ebenfalls aus der Strömungsvisualisierung stammt COVISE (COllaborative Visualization and Simulation Environment) [36]. Ähnlich wie TENT erlaubt COVISE das graphische Verwalten von Datenflüssen zwischen Anwendungsmodulen (Abb. 8.2). In C++ implementiert wird anstelle von CORBA ein proprietärer COVISE Request Broker (CRB) verwendet, was die Portabilität etwas einschränkt. COVISE bietet insbesondere auch Unterstützung für Virtual Reality Darstellungen, z.B. in der CAVE. Mit dem Benchmarking von CORBA-Implementationen beschäftigte sich das Team um Virgine Amar. Sie erarbeiteten außerdem Ansätze zur Integration von STEP und CORBA [96, 95, 3, 2]. 8.4 Vorbereitende Arbeiten 121 STEP ist ein internationaler Standard für die menschen- und maschinenlesbare Darstellung von Produktdaten. Die Anwendungsgebiete liegen u.a. im CAD-, Produktions-, und Ingenieurbereich. Während CORBA eine plattformunabhängige Netzwerkkommunikation ist, stellt STEP eine Art plattformunabhängiger Produktdatenbeschreibung dar. STEP sollte ursprünglich auch als einheitliches Datenmodell im Rahmen des AutoBench Projekts [86] verwendet werden. Die Datenbeschreibungen der AutoBench Partner erwiesen sich jedoch als zu komplex und zu verschieden, um sie auf eine einheitliche STEP Beschreibung zu bringen. Außerdem hätte die Verwendung von STEP Performance-Einbußen mit sich gebracht. 8.4 Vorbereitende Arbeiten In der frühen Projektphase war noch nicht klar, ob CORBA sich für den Transfer großer Datenmengen eignet, wie sie bei der Anbindung des Visualisierungstools an den FE-Solver anfallen. Es zeigte sich jedoch, dass große Datenmengen durchaus effizient übertragen werden können. Voraussetzung ist allerdings, dass die Daten in großen Blöcken, also mit wenigen CORBA-Methodenaufrufen, übertragen werden. Je kleiner die Übertragungseinheit Abbildung 8.2: Die Benutzeroberfläche von COVISE 122 Integration ist, um so mehr Overhead fällt bei der CORBA-Kommunikation an. Tabelle 8.4 macht dies deutlich. Verbindung Blockgröße Local 100Mb LAN 10Mb LAN Internet2 0 Bytes1 .27 ms .37 ms 1.64 ms 2.00 ms CORBA (Orbacus ORB) 1 kB 8 kB 128 kB 3.5 MB/s 18.2 MB/s 51.2 MB/s 1.6 MB/s 5.7 MB/s 9.6 MB/s 363 kB/s 846 kB/s 796 kB/s 37 kB/s 72 kB/s 355 kB/s 1 MB 32.1 MB/s 8.8 MB/s 780 kB/s 358 kB/s TCP 8 kB 99.2 MB/s 10.2 MB/s 820 kB/s 381 kB/s Tabelle 8.1: CORBA Transferraten für verschiedene Datenmengen, verglichen mit einer entsprechenden TCP/IP Verbindung. Zu Beginn der Arbeiten, als der FE-Solver PAM-CRASH noch keine CORBA Schnittstelle hatte, wurde für Testzwecke eine Software namens PamServer entwickelt. PamServer ist eine eigenständige Anwendung, die über das Dateisystem mit einem laufenden PAMCRASH Simulationsprozess kommuniziert oder die Ergebnisse einer kompletten Simulation einliest, und nach außen hin einen CORBA Server mit entsprechender Schnittstelle darstelllt (Abb. 8.3). FE Solver (PAM−CRASH) (Child−) PamServer z.B. shutdown Postproc Datei Daten−Puffer Signal Datei Corba−Server Int ern et Current State Viewer Methoden− Aufruf Ergebnis (Daten) Corba Client PAM−File−Interface (PamServer) Abbildung 8.3: Der PamServer simuliert ein CORBA-fähiges PAM-CRASH 1 2 Reiner Methodenaufruf in Millisekunden. Beispielwerte, gemessen im deutschen Wissenschaftsnetz zwischen Erlangen und St. Augustin bei Bonn 8.4 Vorbereitende Arbeiten 123 Ziel des PamServer ist es, die Implementierung eines CORBA-Clients im Visualisierungstool zu ermöglichen und zu testen, noch bevor PAM-CRASH eine CORBASchnittstelle besitzt. So konnte die Machbarkeit des Vorhabens demonstriert werden, und zur Implementierung einer CORBA-Schnittstelle in PAM-CRASH übergegangen werden. Das wesentliche Merkmal des PamServers ist, dass er eine CORBA-Schnittstelle für eine nicht CORBA-fähige Anwendung bereitstellt. PamServer ist also ein CORBA-Wrapper für diese Anwendung. Zusätzlich kann der PamServer Cache-Funktionalität bereitstellen, so dass er Daten, die vor kurzem benötigt wurden, oder die voraussichtlich bald benötigt werden, im Speicher bereit hält. Die Ergebnisdaten von PAM-CRASH können nur mit einer proprietären Softwarebibliothek, der DAISY-Libray, gelesen werden. PamServer liest die Daten mit Hilfe dieser Bibliothek von der Festplatte, entweder gleich beim Start des PamServers oder, je nach Konfiguration, erst wenn eine Anfrage (CORBA-Request) eintrifft. Die CORBA-Schnittstelle des PAM-Servers ist an die Schnittstelle der DAISYBibliothek angelehnt, da beide Schnittstellen einem ähnlichen Zweck dienen. Der Datentransfer geschieht durch eine Gruppe von Methoden, welche Felder von Fließkommawerten oder ganzen Zahlen zurückliefern oder Informationen über die Eigenschaften des Datensatzes. So können beispielsweise die Koordinaten aller Knoten zu einem bestimmten Simualtionszeitschritt mit einem Methodenaufruf übertragen werden, ebenso die Liste aller Knoten, die Liste aller Elemente eines Typs, sowie Topologieinformationen, aus denen hervorgeht, aus welchen Knoten jedes Element besteht. Außerdem kann vorab die Anzahl der Elemente und Knoten erfragt werden, um der anfragenden Anwendung die Möglichkeit zu geben, den nötigen Speicherplatz bereitzustellen. Das Visualisierungstool liest in der Regel alle oder eine Auswahl der Zeitschritte, welche PAM-CRASH abgespeichert hat. Diese Zeitschritte können dann in Form einer dreidimensionalen, animierten Geometrie mit Hilfe des Visualisierungstools dargestellt und analysiert werden. Je nach Konfiguration schreibt der FE-Solver PAM-CRASH zusätzlich verschiedene Variablen für jeden Knoten oder für jedes Element in die Ergebnisdatei, z.B. Beschleunigungen, Kräfte usw. Diese können ebenfalls über die CORBA-Schnittstelle des PAM-Servers übertragen werden. Während dem Simulationslauf konnten bisher Befehle an PAM-CRASH nur mittels einer Signal-Datei übergeben werden. Eine Datei, welche beispielsweise aus dem Wort “QUIT” besteht, veranlasst das vorzeitige Beenden der Simulation. Eine Signal-Datei, welche den Inhalt “PLOT” hat, bewirkt das Schreiben des aktuellen Zeitschrittes und den dazugehörigen Ergebnissen in eine Datei. Normalerweise speichert PAM-CRASH Zwischenergebnisse (Zeitschritte, states), auch wegen den großen Datenmengen, nur in relativ großen Zeitintervallen ab. Für die Auswertung am Ende der Simulation sind diese Zeitintervalle ausreichend. Wenn man jedoch den 124 Integration aktuellen Stand der laufenden Simulation beurteilen will, wird ein aktueller Zeitschritt in einer eigenen Datei abgelegt. Der PamServer kann über seine CORBA Schnittstelle die Anforderung nach dem aktuellen Zeitschritt (current state) entgegennehmen. Er schreibt dann ein entsprechendes Signal und wartet bis die Datei mit dem gewünschten Zwischenergebnis abgelegt wurde. Anschliessend wird diese Datei so behandelt, als wäre sie ein eigenes Simulationsergebnis mit nur einem Zeitschritt. Dazu wird ein eigener PamServer gestartet. Das Starten eines neuen PamServers für jede Ergebnisdatei ist vor allem deshalb sinnvoll, um auf neue Anfragen aktuelle Zeitschritte liefern zu können, während gleichzeitig noch frühere Anfragen mit konsistenen Daten versorgt werden. Das heißt, eine Anwendung, die begonnen hat, einen Zeitschritt einzulesen, muss auch weiterhin die Daten dieses Schrittes erhalten, selbst wenn es inzwischen einen neuen aktuellen Zeitschritt gibt, der vielleicht bereits an eine andere Anwendung übertragen wird. 8.5 Anbindung des Visualisierungstools an den FESolver Die Erfahrungen mit dem PamServer waren positiv und brachten wertvolle Erkenntnisse hinsichtlich einer direkten Anbindung des Visualisierungstools an den FE-Solver. Dennoch gibt es einige Aspekte, die bei der direkten Anbindung zusätzlich zu beachten sind, oder aufgrund der gewonnenen Erkenntnisse verbesert wurden. 8.5.1 Schnittstellengestaltung Kohärenz mit Hinblick auf zeitliche Wie beim PamServer gilt auch hier, dass ein konkurrierender Zugriff auf das aktuelle Zwischenergebnis möglich sein muss. Nun wird jedoch nicht ein neuer Prozess gestartet, sondern nur ein neuer Thread, um die Übertragung des Zwischenergebnisses zu gewährleisten. Voraussetzung für dieses Vorgehen ist, dass sämtliche State-spezifischen Informationen atomar, d.h. mit einem einzigen CORBA-Methodenaufruf, übertragen werden können. Dazu wurde eine entsprechende Datenstruktur PamState definiert, welche alle dazu notwendigen Daten beinhaltet: typedef sequence<float> floatseq; // ein Feld aus Fließkommazahlen struct PamState { // beinhaltet alle Daten eines PAM-CRASH Zeitschrittes // Zeitpunkt dieses Simulationsschrittes float time; 8.5 Anbindung des Visualisierungstools an den FE-Solver 125 // Koordinaten aller Knoten zu dem Zeitpunkt time floatseq coords; // Zusätzliche Variablen, falls angefordert, sonst leer floatseq var; }; Der folgende Ausschnitt zeigt die wichtigesten Methoden der CORBA-Schnittstelle zwischen Visualisierungstool und FE-Solver: interface PamJob { // Get Initial Geometry void cGetParams(out long cNumNodes, out long cNumBeams...); long cGetNumMaterials() raises (PamJobException); floatseq cGetCoordsInitState() raises (PamJobException); longseq cGetMatLabels() raises (PamJobException); longseq cGetNodeLabels() raises (PamJobException); longseq cGetBeamLabels() raises (PamJobException); longseq cGetShellLabels() raises (PamJobException); longseq cGetToolLabels() raises (PamJobException); longseq cGetSolidLabels() raises (PamJobException); longseq cGetBeams() raises (PamJobException); longseq cGetShells() raises (PamJobException); longseq cGetTools() raises (PamJobException); longseq cGetSolids() raises (PamJobException); // Get DAISY States long cGetNumofDsyStates() raises (PamJobException); long cGetNumCurrentDsyState(); PamState cGet1DsyState(inout PamVar cVar, in boolean cCoor, in long cState); // ... }; Die erste Gruppe von Methoden (Abschnitt Initial Geometry) liefert Daten, die im zeitlichen Verlauf der Simulation gleich bleiben. Die zweite Gruppe von Methoden (Abschnitt DAISY States) liefert die eigentlichen Ergebnisse der Simulation. Durch die atomare Übertragung aller zu einem Zeitschritt gehörenden Daten wird deren zeitliche Kohärenz sichergestellt. 8.5.2 Besonderheiten beim Verbindungsaufbau Bevor eine CORBA Kommunikation stattfinden kann, müssen die vorhandenen CORBA Server-Objekte durch den ORB auffindbar sein. Dazu benötigt der ORB Information über 126 Integration Adresse und Port des Rechners, und die eindeutige ID eines jeden Objektes. Aus diesen Informationen generiert der ORB eine Objekt-Referenz, welche wie ein Zeiger für lokale und entfernte Objekte in gleicher Weise verwendet werden kann. Für die Übermittlung der Information zum Auffinden der Server-Objekte gibt es verschiedene Möglichkeiten: 1. Die Information wird in eine Zeichenkette umgewandelt und an die Clientapplikation übermittelt. Die Übermittlung erfolgt auf herkömmliche Weise, z.B. über ein gemeinsames Dateisystem, FTP, Email, usw. 2. Jedes Server-Objekt meldet sich bei dem CORBA Naming Service an, der von den CORBA Client Objekten abgefragt werden kann. Voraussetzung ist, dass ein CORBA Nameserver permanent läuft und erreichbar ist. Die Referenz des Nameservers wird erstmalig wie bei Punkt 1 übermittelt. 3. Verschiedene proprietäre Mechanismen: Die CORBA Implementation Visibroker beispielsweise stellt einen sogenannten Smart Agent zur Verfügung. Wie der Naming Service dient auch der Smart Agent dem Auffinden von CORBA Objekten, letzterer ist jedoch wesentlich einfacher zu handhaben. Variante 1 ist relativ umständlich und eher für Testzwecke oder seltene Verwendung geeignet. Variante 2 wird in der Praxis häufig verwendet. Jedoch ist auch hier eine entsprechende Konfiguration auf Clientseite nötig, und vor allem ist, wie auch bei Variante 3, die ständige Verfügbarkeit einer zentralen Komponente unabdingbar. Jede zentrale Komponente stellt wiederum eine Gefahr für die Verfügbarkeit des Gesamtsystems dar. Selbst wenn der Nameserver einwandfrei seinen Dienst tut ist ein Problem mit dem zugrundeliegenden Rechnersystem nicht vollständig auszuschließen. Auch muss damit gerechnet werden, dass eine CORBA-Serverapplikation sich beim Beenden nicht ordnungsgemäß abmeldet, und so die Information des Nameservers inakurat wird. Aus diesen Gründen wurde bei bei der Anbindung des Visualisierungstools an den FE-Solver ein anderer Weg gewählt: Eine bereits vorhandene zentrale Komponente, das Job Management System Codine, verwaltet die CORBA Referenzen der PAM-CRASH Jobs. Da Codine bereits Informationen über die aktuellen Jobs hat, bereitet das Verwalten einer CORBA Referenz, dargestellt durch eine Zeichenkette, keinen großen Aufwand. Die Integrationsplattform CAE-Bench, die mit Codine kommuniziert, übermittelt die CORBA Referenz an das Visualisierungstool (Abbildung 8.4). 8.6 Einbettung des Visualisierungstools in die Integrationsplattform In Abschnitt 2.1 wurde bereits dargestellt, dass die CAE Prozesskette eine Vielzahl von Prozessen und verschiedene Tools umfasst, die zusammenarbeiten müssen. Traditionell 8.6 Einbettung des Visualisierungstools in die Integrationsplattform 127 wird jedes dieser Tools separat gestartet und hat eine eigenständige Umgebung. Die Abarbeitung dieser Kette ist für den Berechnungsingenieur zeitaufwändig. Die Web-basierte Integrationsplattform CAE-Bench dient dazu, die Arbeitsabläufe bei der Crash-Simulation zu automatisieren, die anfallenden Daten zu verwalten, und so den Entwicklungsprozess zu beschleunigen. Außerdem wird mit Hilfe der Integrationsplattform eine einheitliche Bedienoberfläche für alle an der Crash-Simulation beteiligten Anwendungen bereitgestellt. Dies reduziert den Einarbeitungsaufwand und trägt damit zur Zeit- und Kostenersparnis bei. Die zentrale Software-Komponente von CAE-Bench hat einerseits Zugriff auf die Bauteildatenbank (PDM, Product Data Management), andererseit stellt sie einen Web Server zur Verfügung. Über diesen können die dynamisch erstellten CAE-Bench Web Seiten vom Benutzer in einem normalen Web-Browser geladen werden. Die Web Seiten enthalten kontextabhängige Informationen und Bedienelemente in Zusammenhang mit den aktuellen Arbeitsabläufen. Durch Einbetten von Javascript Code in die Web Seiten wird ein Teil der CAE-Bench Funktionalität auf Client-Seite, also beim Benutzer, ausgeführt. Mit CAE-Bench werden Kommandozeilen-orientierte Benutzerschnittstellen von Anwendungen und Stapelverarbeitungsprozesse auf eine Web-basierte, und daher graphische und einheitliche Bedienoberfläche abgebildet. Einige Anwendungen, speziell Visualisierungstools, haben bereits eine graphische Oberfläche, welche insbesondere das 3D-Fenster, Visualisierung PAM−CRASH FE−Solver launch,... Corba Client Corba Server Befehle Corba Client FE−Daten Corba ID launch,... Codine CAE−Bench Corba Layer GUI im Web−Browser Job Management Berechnungsumgebung Benutzerumgebung Abbildung 8.4: Zusammenspiel der Komponenten bei der Crash-Visualisierung 128 Integration in dem das Ergebnis der Visualisierung dargestellt wird, umfasst. Auch die Bedienung solcher Tools lässt sich mit CAE-Bench vereinheitlichen. Hierzu kommen zwei Möglichkeiten in Frage: 1. die gesamte Oberfläche des Visualisierungstools in eine CAE-Bench Web-Seite einbetten 2. das Visualisierungstool wie bisher in einem eigenen Fenster laufen lassen, und über CAE-Bench ansteuern Die erste Variante würde ein Umschreiben der gesamten Anwendung als Browser-Plugin oder als Java 3D Anwendung erfordern. Die zweite Variante hat hingegen den Vorteil, dass die Anwendung auch unabhängig von CAE-Bench ausgeführt, bedient und weiterentwickelt werden kann. Bezüglich der Kommunikation zwischen Visualisierungstool und CAE-Bench fiel die Entscheidung zugunsten von CORBA, als plattformunabhängige, objektorientierte Middleware. In diesem Zusammenhang wurde, nach der Schnittstelle zu PAM-CRASH, eine CORBA Schnittstelle des Visualisierungstools zu CAE-Bench realisiert. Hierbei bieten sich wiederum zwei Möglichkeiten an: 1. das Visualisierungstool kommuniziert direkt mit der zentralen CAE-Bench WebServer Komponente 2. das Visualisierungstool kommuniziert mit der Client-seitigen CAE-Bench Komponente, also mit der Web-Seite, welche die Benutzeroberfläche darstellt. Bei der ersten Variante müsste für jeden Benutzer eine eigene Visualisierungs-Sitzung verwaltet werden. Die CAE-Bench Web-Seite enthält bereits die nötigen benutzerspezifischen Informationen. Somit fiel die Entscheidung zugunsten der zweiten Variante, welche gleichzeitig ein sinnvolles modulares Design im Sinne der Client-Server-Technologie darstellt. Allerdings ist es nicht möglich, mit einer Web-Seite direkt über CORBA zu kommunizieren. Diese Funktion übernimmt daher ein im Rahmen der vorliegenden Arbeit entwickeltes Java Applet, welches in die CAE-Bench Web-Seiten eingebettet wird. Das Java Applet beinhaltet sowohl einen CORBA Client, als auch einen CORBA Server. Durch den Server kann das Visualisierungstool sich bei dem Applet anmelden und seine CORBA Referenz bekanntgeben. Die dazu benötigte CORBA-Referenz des Applets wird beim Aufruf des Visualisierungstools aus dem Applet heraus als Kommandozeilenparameter übermittelt. So lässt sich auch hier der Einsatz eines Nameservers oder anderer umständlicher Prozeduren vermeiden. Als CORBA Client kann das Applet Methoden der CORBA/IDL Schnittstelle des Visualisierungstools aufrufen und so Befehle übergeben und Informationen abrufen. Somit 8.6 Einbettung des Visualisierungstools in die Integrationsplattform 129 stellt das Applet eine Art Fernsteuerung dar; das Visualisierungstool muss dabei nicht unbedingt auf dem gleichen Rechner laufen. Das Java Applet hat eine eigene graphische Benutzeroberfläche und kann daher auch unabhängig von CAE-Bench benutzt werden. In CAE-Bench eingebettet, wird das Java Applet über Javascript Methoden der CAEBench Web Seite angesprochen, ein Mechanismus, der als LiveConnect bezeichnet wird. So stellt das Applet das Bindeglied zwischen CAE-Bench und dem Visualisierungstool dar (Abbildung 8.5). Damit eine CORBA Verbindung mit einem Java Applet möglich ist, muss noch ein weiterer Aspekt beachtet werden: Jedes Applet läuft in einer sogenannten Sandbox, d.h. es darf normalerweise keine Operationen ausführen, welche die Systemsicherheit gefährden könnten. Erst wenn ein Applet als vertrauenswürdig eingestuft ist, etwa weil es signiert ist, oder weil der Benutzer dem Applet bestimmte Rechte eingeräumt hat, ist eine Kommunikation möglich. Bei früheren Java-fähigen Web Browsern wurden die Rechte des Applets vom Browser verwaltet, und die Mechanismen der Rechtevergabe waren uneinheitlich, und mussten bei der Implementierung des Applets berücksichtigt werden. Aktuell werden die Rechte von der Java Laufzeitumgebung verwaltet, also unabhängig vom verwendeten Web Browser. Sofern das Applet in eine CAE-Bench Web Seite eingebettet ist, dient es vor allem der Kommunikation zwischen CAE-Bench und Visualisierungstool. Die graphische Oberfläche des Applets wird nicht zwingend benötigt und kann auf Wunsch auch versteckt werden. Jedoch kann das Applet auch zur Anzeige von Informationen verwendet werden: Nachdem das Visualisierungstool als Prozess aus dem Applet heraus gestartet wird, kann dieses Web Browser / Web Seite CAE-Bench Web Server HTTP HTML & JavaScript LiveConnect Visualisierungstool PDMDatenbank Java Applet CORBA Abbildung 8.5: Anbindung des Visualisierungstools an CAE-Bench mit Hilfe eines Java Applets 130 Integration die Konsolenausgabe (stdout, stderr) des Tools abfragen und in einem Textfeld innerhalb des Applets anzeigen (Abbildung 8.6). Damit wird kein zusätzliches Konsolenfenster mehr benötigt. Abbildung 8.6: Java-Applet (unten im Bild), eingebettet in eine CAE-Bench Web-Seite zur Steuerung des Arbeitsablaufes bei der Crash-Simulation. Kapitel 9 Gesamtbetrachtung der Prozesskette In den vorigen Kapiteln wurden die verschiedenen, im Rahmen der vorliegenden Arbeit entwickelten Komponenten vorgestellt. An dieser Stelle soll nun anhand einer Beispielsitzung ein Gesamtbild der Arbeitsabläufe bei der Crash-Simulation vermittelt werden. Die Durchführung einer Crash-Simulation kann, in groben Zügen, wie folgt ablaufen: • Der Berechnungsingenieur wählt in CAE-Bench die gewünschten Bauteile (Versionen), die in der PDM-Datenbank zur Verfügung stehen. • Die Bauteile werden von einem speziellen Tool (Hypermesh) vernetzt und zu einem Gesamtfahrzeug-Modell zusammengesetzt. • Falls verfügbar, werden Verbindungselemente aus der Datenbank in CAE-Bench eingelesen. • Das Visualisierungstool (FEMod, früher CrashViewer) wird aus der Integrationsumgebung heraus gestartet. Das Fahrzeugmodell und die Verbindungselemente werden geladen, auf Konsistenz geprüft, und dargestellt. • Preprocessing wird durchgeführt. Dies impliziert z.B.: – Der Berechnungsingenieur kann ein Bauteil in der 3D-Darstellung markieren und weitere Informationen zu diesem Bauteil bei CAE-Bench anfordern. Die Bauteil-ID wird dazu mit Hilfe der CORBA-Verbindung vom Visualisierungstool an CAE-Bench gereicht – Stellt sich bei der 3D-Visualisierung heraus, dass ein Bauteil durch eine andere Version ersetzt werden soll, kann dies mit Hilfe der Integrationsumgebung veranlasst werden. CAE-Bench bereitet daraufhin eine Liste kompatibler Bauteilvarianten vor, aus welcher ein neues Bauteil ausgewählt werden kann. Das 132 Gesamtbetrachtung der Prozesskette neue Bauteil wird dann in das Visualisierungstool geladen, und ersetzt die alte Variante. Verbindungselemente können dabei, falls gewünscht, übernommen werden. Entstehen beim Ersetzen inkonsistente Verbindungselemente, werden diese automatisch markiert und können durch den Benutzer korrigiert werden. – Auf ähnliche Art können Bauteile des Fahrzeugmodells entfernt werden, wenn sie für das Simulationsergebnis nicht signifikant sind, oder neue Bauteile und Bauteilgruppen via CAE-Bench hinzugefügt werden, um die Simultionsgenauigkeit zu erhöhen. – Weitere Preprocessing Operationen können durchgeführt werden, wie z.B. das Beseitigen von Perforationen und Penetrationen, das Definieren neuer Verbindungselemente, oder das Verändern von Bauteilen. – Im Rahmen des Massentrimms werden schliesslich die strukturlosen Massen aus der PDM-Datenbank mit Hilfe der Integrationsumgebung dem Fahrzeugmodell im Visualisierungstool hinzugefügt. Diejenigen Bauteile, deren Geometrie bei der Crash-Simulation von geringer Bedeutung ist, können mit Hilfe des Visualisierungstools in strukturlose Massen umgewandelt werden. Das beschleunigt die Simulation und reduziert die anfallenden Datenmengen. • Im Anschluss an das Preprocessing wird das Fahrzeugmodell aus dem Visualisierungstool mittels CAE-Bench abgespeichert und die Finite-Elemente-Simulation wird gestartet. Das Scheduling und Monitoring des laufenden Simulationsprozesses geschieht mit Hilfe der speziellen Job Management Software Codine. • Während der Simulation kann das aktuelle Zwischenergebnis abgerufen und visualisiert werden. Sind keine neuen Ergebnisse zu erwarten, kann die Simulation vorzeitig beendet werden und mit veränderten Ausgangsdaten neu aufgesetzt werden. • Nach erfolgreicher Simulation wird das Ergebnis ausgewertet. Dazu werden die gespeicherten Schritte der Simulation dreidimensional animiert dargestellt. Lokale Größen wie Beschleunigungen und Kräfte können mit Hilfe von Farben auf der Bauteiloberfläche oder mit Hilfe von Zusatzgeometrie visualisiert werden. All dies kann sowohl am Arbeitsplatzrechner geschehen als auch in einer Virtual-Reality-Umgebung. • Erfüllt das Ergebnis der Simulation die Sicherheitskriterien, können die Fahrzeugprototypen für die gesetzlich vorgeschriebenen realen Crash-Tests erstellt werden. Verlaufen diese Tests erfolgreich, und dies ist nach den durchgeführten Simulationen zu erwarten, so kann mit der Serienproduktion begonnen werden. • Entspricht das Ergebnis der Crash-Simulation nicht den Sicherheitsanforderungen, wird der Simulationszyklus erneut durchlaufen: kleinere Änderungen werden durch den Berechnungsingenieur direkt am FE-Modell durchgeführt, für weitreichendere Modifikationen wird die CAD-Abteilung beauftragt. Anschliessend wird die Simulation erneut durchgeführt und ausgewertet. Je früher die Unzulänglichkeiten des Gesamtbetrachtung der Prozesskette 133 Fahrzeugmodells entdeckt werden, desto einfacher und damit billiger ist die Korrektur. Besonders kostspielig sind Schwachstellen, die erst beim realen Crash-Test deutlich werden. Aufgrund der guten Simulationsgenauigkeit sind diese Fälle heute eher selten. Ein Ziel der zukünftigen Entwicklung besteht darin, die Anzahl der Simulationen zu reduzieren, indem das Modell schneller gegen die endgültige Version konvergiert. Ein vielversprechender Ansatz besteht darin, Informationen aus den bereits durchgeführten Simulationen so auszuwerten, dass die Ergebnisse zukünftiger Simulation zumindest teilweise vorausgesagt werden können. Der Berechnungsingenieur soll zu diesem Zweck verstärkt durch rechnergestütztes Data Mining und Data Management unterstützt werden. 134 Gesamtbetrachtung der Prozesskette Kapitel 10 Zusammenfassung und Ausblick In dieser Arbeit wurde eine Reihe von neuen Verfahren erarbeitet, welche den Berechnungsingenieur bei der Durchführung von Crash-Simulationen unterstützen. Die hier vorgestellten Verfahren liefern einen wichtigen Beitrag zur Verkürzung der Zeit für die Vorbereitung und Auswertung einer Crash-Simulation (Abb. 10.1). Zum anderen wird die Qualität der Crash-Simulation durch verbesserte Aufbereitung der Daten (Preprocessing) gesteigert. So wird insbesondere beim automatischen Setzen von Schweißpunkten entlang von Flan- Abbildung 10.1: Verkürzung der Entwicklungszeiten in der Karosserieentwicklung 136 Zusammenfassung und Ausblick schen dem Ingenieur viel Routinearbeit abgenommen. Die rechnerunterstützte Visualisierung und Beseitigung von Perforationen bietet wiederum völlig neue Möglichkeiten zur Korrektur fehlerhafter Eingabedaten für die Crash-Simulation. Ebenfalls neu ist die Möglichkeit der Modifizierung der Bauteilgeometrie direkt am Finite-Elemente Modell, wodurch sich eine Vereinfachung der Prozesskette ergibt. Der Umweg über die CAD-Abteilung und die Neuvernetzung des geänderten Bauteils ist nun nicht mehr nötig. Die Unterstützung des Massentrimms durch Visualisieren, Editieren und Berechnen der strukturlosen Massen direkt innerhalb der 3D-Darstellung des FE-Modells stellt sowohl eine quantitative als auch eine qualitative Verbesserung dieses Vorgangs dar, d.h. der Massentrimm wird effizienter und fehlerfreier durchgeführt. Einen wichtigen Beitrag zur effizienten und fehlerfreien Durchführung von CrashSimulationen stellt auch die Integrationsplattform dar. Die CORBA-basierte Anbindung des Visualisierungs- und Modellierungstools an CAE-Bench und an PAM-CRASH erlaubt nun eine einheitliche und einfache Benutzerführung. Basierend auf den bisherigen Erfahrungen können für die Zukunft bereits einige Weiterentwicklungen vorhergesehen werden. Durch die zunehmende Rechenleistung, sowie durch neue und verbesserte Algorithmen werden auch in Zukunft immer mehr Routineaufgaben bei der Crash-Simulation automatisch durchgeführt. Durch die verbesserte Rechenleistung wird der Zeitaufwand für die eigentliche Simulation immer weiter gesenkt. Mit Hilfe mit einer intelligenten automatischen Auswertung bisheriger Simulationen (Data Mining) könnte die Neuberechnung der Simulation auf die geänderten Bereiche beschränkt werden. So würde aus dem heutzutage noch mehrere Stunden oder gar Tage dauerndenden Vorgang ein interaktives Verfahren, das Zusammenhänge zwischen Karosseriebeschaffenheit und Crashverhalten sofort verdeutlicht. Im Bereich des Preprocessing sind für die Zukunft ebenfalls einige Weiterentwicklungen, im Großen sowie im Detail, denkbar. Beispielsweise könnte kontextsensitive Information über die Art des gerade bearbeiteten Bauteils in das Preprocessing einfließen. Diese Information würde in einer erweiterten Bauteildatenbank bereitgehalten. Insbesondere Bauteilverbindungen können so schneller und qualitativ hochwertiger durchgeführt werden. Aber auch im Bereich der Geometriemodifikationen könnte aus der unendlichen Vielfalt der Möglichkeiten die Gruppe der sinnvollen Änderungen vorweg ausgefiltert werden. Damit verringert sich der Aufwand beim Editieren des Modells. Ein nächster Schritt wäre die automatische Anpassung der Fahrzeugkarosserie, um die gewünschten Eigenschaften zu erhalten. Voraussetzung hierfür ist allerdings, dass es gelingt, noch mehr Expertenwissen vom Menschen auf den Rechner abzubilden. Expertensysteme und künstliche Intelligenz sind zwar keine neuen Fachgebiete, den großen Durchbruch hat es bislang jedoch nicht gegeben. Dennoch besteht die Hoffnung, mit Hilfe neuer Technologien, z.B. neuronale Netze oder genetische Algorithmen, das Anwendungsgebiet maschineller Rechenleistung zu erweitern. Abstract This research elaborates new approaches to support car body developers in preparing the input and analyzing the output of car crash simulations. The presented work is based on a visualization software tool, which allows a virtual-reality-like user interaction. Several features were implemented to facilitate various kinds of modifications on the finite element data used as input for the crash simulations. Further, the visualization software was embedded into a new, web-based integration environment, by means of a Java applet and by using CORBA middleware. Most of the research presented here was supported by the BMBF (Bundesministerium für Bildung und Forschung, Federal Ministry for Education and Research). The research was done in the context of the two projects AutoBench and AutoOpt. Participants of these projects are the University of Stuttgart and the Fraunhofer-Gesellschaft (FHG), three german car manufacturers, like BMW, and various software suppliers of the automotive industry. The features described in this text were implemented within a protoypical visualization tool called CrashViewer. Already in the prototype stage, the tool was heavily used at the car body design department of the car manufacturer BMW. Especially the automatic recognition of flanges and the automatic generation of spotweld lines found broad approval. Recently, the visualization tool prototype was transformed into a commercial product by the company science+computing and is currently sold under the name FEMod. Scenario In the automotive industry crash safety is a major concern when designing a new car. The increasing pace at which new products are brought on the market requires a continuous improvement of the development cycle, in order to stay competitive. Evaluating the crash behaviour of a car body is a difficult task. The traditional approach consists in crash tests. These tests are expensive and time-consming especially due to the car prototypes being built for each test. 138 Abstract A modern approach consists in crash simulations performed on the computer. The simulations are cheaper and faster than the real tests. Only a small number of real tests are performed for validating the simulation results and due to the legal requirements. Car crash simulations are based on the widely used Finite Elements Method (FEM). In order to use this approach, the CAD geometry data must be discretized, i.e. transformed into small elements, called the finite elements. In the prevalent case of plate components, for numerical reasons, the finite elements are mostly quadrilaterals. Before the finite element mesh can be used for crash simulations, a variety of modifications may be necessary. Eventually, inconsistencies like penetrations and perforations need to be eliminated, component links need to be defined and so on. The research presented here led to various features of the visualization tool in order to support the simulation engineer in pre-processing the FE data. Furthermore, the integration environment optimizes the workflow, relieving the engineer of routine activities and providing a uniform user interface for the several software tools involved in the workflow. Penetrations and Perforations Penetrations and Perforations are mesh inconsistencies caused by the discretization of initially non-penetrating smooth surfaces from the CAD geometry data. Another possible cause is the incompatibility of neighbouring components, e.g. when testing a new version of a component. Plate components are represented geometrically as a median surface with no thickness. The plate thickness, however, is a known parameter of the component and is taken into account within the crash simulation. Penetrations are regions where two components are closer to each other than the average of their plate thickness. Penetrations lead to initial forces within the FE model. They can falsify the simulation result. Perforations are locations where the medial surfaces of two components intersect each other. Penetrations are at latest removed during the simulation run after some timesteps due to the repelling forces, while perforations persist throughout the simulation run. Therefore, the absence of perforations is a precondition for the crash simulation. Moreover, the penetration removal algorithm works only on perforation-free data. Perforations and penetrations can be efficiently detected by using a bounding volume hierarchy. The hierarchy eliminates the need of testing each finite element against each other, which is computationally very expensive (O(n2 )). By grouping the elements spatially in bounding volumes, only those element pairs have to be tested, which are contained in overlapping bounding volumes on the lowest level of the hierarchy. At the higher levels, only those branches with overlapping volumes need to be descended further. The complexity is therefore O(log(n)2 ). Abstract 139 Penetrations and perforations are visualized by color mapping on the material surface. Color mapping can be done by using textures, which are a feature of modern graphics hardware, so that no additional geometry needs to be rendered and the graphics performance is not affected. Penetration removal is performed by an iterative procedure. The directions of the repelling forces are established, before the penetrating nodes and the penetrated elements are moved in opposite directions by a small amount. The movement has to be done by small amounts, because the directions of the forces acting on the mesh may vary, and removing the penetration at once may produce penetrations or even perforations with other elements. When removing perforations, the perforating nodes are projected onto the perforated surface and then moved some small amount further in the direction of projection. This transforms the perforation into a penetration which can be removed by the penetration removal algorithm mentioned before. Situations exist, where it can not automatically be determined in which direction the perforating node has to be moved or which part of the intersecting component lies on the wrong side. In these cases, the user gives supplementary information by clicking with the mouse in order to specify a surface normal along which the perforating node is moved, respectively a point which is known to be on the wrong side. Perforation removal may sometimes lead to some distortions in the mesh. Though the shape of the component is still okay, some finite elements might be stretched or squeezed becoming irregular. For numerical reasons, irregular elements are undesirable in the simulation input. Therefore, a mesh relaxation algorithm was implemented. The mesh relaxation algorithm moves the mesh nodes within the surface iteratively, as if the neighbouring nodes were connected by arcs of equal length. To obtain not only edges of similar length, but also similar angles, the element diagonals also have to be considered as being connected through arcs. Since corner nodes are not moved and nodes on an edge are just moved along that edge, the shape of the car component is nearly preserved during mesh relaxation. Connecting Car Components Connections between car components can be realized within the FE model through FE mesh nodes which belong to several car components. With this approach, however, a change in one car component requires to completely remesh the whole model. In order to avoid this problem, a transition took place towards independently meshed assembly parts a few years ago. This way, only those components modified since the meshing of the FE model need to be remeshed. The remeshing of the whole model due to some minor changes is not necessary anymore. 140 Abstract To assemble the components, special link elements have been introduced. The prevalent link type is the point link, which usually is realized by a spotweld. In the early development stage, the CAD component data do not provide link information. For performing crash simulation in this early stage, it is necessary to define links manually. A way to define links consists in editing the data file manually, since the data file is in human-readable ASCII format. A much more comfortable way is provided by the FE visualization and modification tool FEMod. The user can point with the mouse to locate the desired spotweld position and create a new spotweld or delete an existing one. In most of the cases, links are placed along special regions called flanges. Flanges are regions where two components are (quite) parallel to each other and close to each other. Components are usually connected through spotweld lines along flanges. Within the scope of this dissertation, a flange recognition functionality was developed, which allows to connect two car components by automatically generating and positioning a set of point links. This way, the user is released from the task of defining each point link one by one. The algorithm can also be used to automatically place surface links, like adhesive bondings, along a flange. The flange detection algorithm is based on a kind of breadth-first graph search. Starting from a given point, a growing neighbourhood of flange elements is collected using a FIFO queue. Flange element criteria are based on the distance to the other component, which is going to be connected, as well as on the surface normal deviation at the connection point, which is a measure for the parallelism of the two surfaces. When a second user-specified flange element is encountered, a shortest path between the start and the target element can be reconstructed. In this case, only the desired part of the flange is linked. When no target element is given, the flange is sought in both longitudinal directions until the farthest elements are found. In this case, the whole flange will be linked. In order to compute the positions of the link elements, the middle line of the flange must be computed first, which can be done based on the previously computed element path. Hereby, the semi-regular structure of the FE mesh is exploited, observing that the edges of the flange’s finite elements are usually aligned with the flange. Therefore, the quadrilateral elements of the path can be used to start searching in four directions for the nearest flange borders. The two nearest flange borders define a segment of the middle line. In the rare cases where the nearest flange borders cannot be found this way, e.g. when a triangular element or a sharp turn of the flange lead to ambiguities, this part of the middle line can be successfully interpolated through a straight line. Free-Form Deformations of the FE Mesh Besides the penetration and perforation removal, sometimes a more general mesh editing feature is desired. This is the case when the influence on crash behavior of some alternative Abstract 141 geometry is going to be examined. Another example is the adaptation of non-matching parts in an early development stage, in order to start a crash simulation. The highest level of flexibility in mesh editing is granted by the independent positioning of arbitrary mesh nodes. This approach, however, is only feasible for very small corrections, because it is laborious and imprecise. Free-Form Deformation (FFD), in contrast, is a spline-based approach for deforming three-dimensional objects. The object is embedded in a spline volume, which can be deformed by means of spline control points. The embedded object is deformed accordingly, taking advantage of the spline’s continuity properties, in order to obtain a smooth deformation. Handling the large number of control points in such a spline volume represents a drawback of this approach. The Direct Manipulation of FFD (DMFFD) approach eliminates the problem by computing the control point positions automatically. The user does not even need to see the control points. He can specify one or several points on the object and new positions for these points. The object then deforms in such a way, that the given constraints are fulfilled, i.e. the specified points move to their new positions while the surface deforms smoothly. Within the scope of this research, the DMFFD approach has been adapted and improved for better performance and usability. The new approach was implemented and tested within the visualisation tool. Through the use of a certain spline type, it was possible to embed only the region under deformation, instead of the whole object (i.e. the car component or car model), within the spline volume. This reduces the computational cost, and it was also a precondition for the deformation operations to become independent from each other. In the traditional DMFFD, the whole sequence of deformations is performed on the same, more and more distorted, global mesh. With the local FFD approach presented in this work, each single point constraint is performed independently, and the special spline type (B-splines over a uniform knot vector, without multiple knots at the ends) grants a smooth transition to the undeformed region. Due to the local mesh, there is no dependance on previous deformations that were performed on the object, therefore each deformation has a similar behaviour. Furthermore, the spline control mesh must not be preserved or saved to file. It can be shown that every deformation described by a multiple point constraint is also achievable by sequencially applying a series of single-point constrained deformations. The goal to keep the user interface simple can therefore be achieved by focusing on single-point constraints. The effect of a single point constraint is a smooth bump, similar to the effect of hitting the real plate component with a soft rubber hammer. This fact has been exploited in order to keep the user interface intuitive and simple. The user can specify with the mouse cursor the point to be “hit“, and press a key, e.g. 1 to 9, in order to exactly define the desired deformation amount. This user interface design facilitates fast and precise interaction. 142 Abstract The deformation direction by default is the local normal at the hit point, but any other direction can be specified as deformation direction, e.g. by saving the normal of an arbitrary point, or by sequentially specifying two arbitrary points of the model. Deformation directions which are tangential to the surface are also possible. They can be specified for example by projecting a previously determined direction onto the surface under the cursor. Mass Trim During a crash simulation, the geometry of some components, like the battery or the wires, has no significant influence. Only the weight and the position of their mass matters. To reduce the data amount, and to simplify and accelerate the simulation and visualization this way, such components are not represented geometrically. Instead, their mass is distributed among the surrounding components, so that the center of mass remains unchanged. In the present research, a visualization approach for unstructured masses has been elaborated. The non-structural mass is hereby represented through a glyph consisting of a sphere and three bars. The sphere position visualizes the center of the mass, the volume of the sphere is proportional to the mass amount. The bars´ orientation show the main inertia axes. The corresponding moments of inertia are proportional to the bar length. A text label displayed near the glyph shows the actual data values of the nonstructural mass. Furthermore, functionality for distributing the mass among other components is provided. Also, a (structural) component can be converted into a non-structural mass. The inertia properties are then automatically computed. Integration Platform The engineer performing crash simulations has to deal with a multitude of software tools. He has to select the appropriate model and/or component versions from the PDM (Product Data Management) database, he has to mesh the CAD data with some meshing tool, and he has to make corrections and modifications on the mesh using one ore more other tools. Then, he performs the simulation with the finite element solver, and he analyses the results with some visualization tool(s). Each of these tools has a different user interface, requiring some accomodation or learning process. Each tool reads and writes several files in various file formats. A solution for the problems described above is possible by means of an integration platform, which provides a uniform user interface for several tools and manages the data transfer between them. A web-based integration platform called CAE-Bench is currently employed at BMW and other car manufacturers. The embedding of the FE visualization Abstract 143 tool into this integration platform was realized within the scope of the research presented here. The adaptation of the visualization tool to the web-based user interface of the integration platform was achieved by means of a Java applet. The Java applet is embedded into web pages generated by the CAE-Bench server. The embedding web page communicates through Javascript with the applet. The Java applet passes the commands and parameters to the visualization tool using the CORBA (Common Object Request Broker) protocol. Information from the visualization tool are also passed back to CAE-Bench via the applet. An appropriate IDL (Interface Definition Language) interface has been defined and implemented in both the applet and the visualization tool. CORBA, as an object-oriented, platform and language independent protocol for interapplication (client/server) communication, is used to perform communication locally as much as over a network, like the internet. A so-called IDL (Interface Definition Language) compiler transforms the interface definition into machine-generated program code for both the client and the server. IDL compilers are available for a multitude of programming languages. This way, CORBA assures significant portability and interoperability. Besides the user interface, the data transfer between the simulation and the visualization tool is also realized with CORBA. Although the simulation writes intermediate results to a file (about one per hour), the CORBA connection allows fast and transparent access to the latest results, without the detour via disk files. The access to the running simulation makes it possible to early recognize if the simulation will not lead to valuable results, and to abort the simulation in this case. This feature is called steering of the simulation. 144 Abstract Literaturverzeichnis [1] 3Dlabs Inc. Ltd. OpenGL 2.0 white papers. http://www.3dlabs.com/support/developer/ogl2. [2] Virginie Amar and Alain Zarli. Linking STEP and CORBA standards for applications interoperability. In Distributed Applications and Interoperable Systems (DAIS), pages 169–184, 1997. [3] Virginie Amar, Alain Zarli, Philippe Debras, and Patrice Poyet. Distributing STEP models with CORBA. In Proceedings of International Symposium on Global Engineering Networking, pages 79–96, 1997. [4] AVS. Advanced Visual Systems Web Page. http://www.avs.com. [5] Chandrajit L. Bajaj, editor. Data Visualization Techniques. Wiley, 1999. [6] Alan H. Barr. Global and local deformations of solid primitives. In Computer Graphics, volume 18, pages 21–30. ACM SIGGRAPH, 1986. [7] Fintan Bolton. Pure Corba. Sams, 2001. [8] Ken W. Brodlie. Scientific Visualization. Springer, 1992. [9] Gerald Brose, Andreas Vogel, and Keith Duddy. Java Programming with CORBA. John Wiley & Sons, 2001. [10] Phong Bui-Tuong. Illumination for Computer Generated Pictures. CACM, 18(6):311– 317, 1975. [11] Edwin Catmull. A subdivision algorithm for Computer Display of Curved Surfaces. PhD thesis, Computer Science Department, University of Utah, Salt Lake City, Dezember 1974. Report UTEC-CSc-74-133. [12] Edwin Catmull and Raphael Rom. A class of local interpolating splines. Computer Aided Geometric Design, pages 317–326, 1974. 146 LITERATURVERZEICHNIS [13] Francis Chin, Jack Snoeyink, and Cao An Wang. Finding the Medial Axis of a Simple Polygon in Linear Time. In Proceedings of the 6th Annual International Symposium on Algorithms and Computation (ISAAC 95), pages 382–391, 1995. Lecture Notes in Computer Science 1004. [14] Clint Chua and Ulrich Neumann. Hardware-accelerated free-form deformation. In Proceedings of the ACM SIGGRAPH/EUROGRAPHICS workshop on Graphics hardware, pages 33–39. ACM Press, 2000. [15] Sabine Coquillart. Extended free-form deformation: a sculpturing tool for 3d geometric modeling. In Proceedings of the 17th annual conference on Computer graphics and interactive techniques, pages 187–196. ACM Press, 1990. [16] Carl de Boor. On calculating with B-splines. Journal of Approximation Theory, 6:50– 62, 1972. [17] Carl de Boor. A practical guide to splines. Springer-Verlag, New York, 1978. [18] Carl de Boor and Klaus Höllig. B-splines without divided differences. In Geometric Modelling – Algorithms and New Trends, pages 21–27. Society for Industrial and Applied Mathematies (SIAM), 1987. [19] Gerald Farin. Curves and Surfaces for Computer Aided Geometric Design. Academic Press, 4th edition, 1997. [20] Gerald Farin and Daniel Jung. Linear precision of rational Bezier curves. Computer Aided Geometric Design, 12:431–433, 4 1995. [21] James D. Foley, Andries van Dam, Steven K. Feiner, and John F. Hughes. Computer Graphics – Principles and Practice. Addison-Wesley, 1992. [22] Tomas Forkert, Hans-Peter Kersken, Andreas Schreiber, Martin Strietzel, and Klaus Wolf. The Distributed Engineering Framework TENT. In Proceedings of Vector and Parallel Processing - VECPAR 2000, pages 38–46, 2000. [23] Norbert Frisch and Thomas Ertl. Embedding Visualisation Software into a Simulation Environment. In Proceedings of the Spring Conference on Computer Graphics, Bratislava, pages 105–113, 2000. [24] Norbert Frisch and Thomas Ertl. Deformation Of Finite Element Meshes Using Directly Manipulated Free-Form Deformation. In Proceedings of Seventh ACM Symposium on Solid Modeling and Applications 2002, pages 249–256, 2002. [25] Norbert Frisch, Dirc Rose, Ove Sommer, and Thomas Ertl. Pre-processing of Car Geometry Data for Crash Simulation and Visualization. In Proceedings of WSCG’01, pages 25–32, 2001. LITERATURVERZEICHNIS 147 [26] Norbert Frisch, Dirc Rose, Ove Sommer, and Thomas Ertl. Visualization and Preprocessing of Independent Finite Element Meshes for Car Crash Simulations. The Visual Computer, 18(4):236–249, 2002. [27] James E. Gain and Neil A. Dodgson. Preventing self-intersection under free-form deformation. IEEE Transactions on Visualization and Computer Graphics, 7(4):289– 298, 2001. [28] Gesellschaft für Mathematik und Datenverarbeitung. Der GMD Spiegel: Perspektiven der Informationstechnik, volume Ausgabe 3/4. GMD, 1998. http://www.gmd.de/de/gmd-spiegel.html. [29] Gesellschaft für Mathematik und Datenverarbeitung. Der GMD Spiegel, Schwerpunkt Simulation, volume Ausgabe 1/2. GMD, 2000. http://www.gmd.de/de/gmdspiegel.html. [30] William R. Gordon and Richard F. Riesenfeld. B-Spline curves and surfaces. Computer Aided Geometric Design, 1974. [31] S. Gottschalk, M. C. Lin, and D. Manocha. OBBTree: a hierarchical structure for rapid interference detection. In Proceedings of the 23rd annual conference on Computer graphics and interactive techniques, pages 171–180. ACM Press, 1996. [32] Dietmar Gross, Werner Hauger, Walter Schnell, and Peter Wriggers. Technische Mechanik, Band 3: Kinetik. Springer Verlag, 1999. [33] Paul S. Heckbert, editor. Graphics Gems IV, chapter I.4. Point in Polygon Strategies. Academic Press, 1994. [34] Michi Henning and Steve Vinoski. Addison-Wesley, 2001. Advanced CORBA Programming with C++. [35] Ewald Hessel. Simulation in der Fahrzeugtechnik. ASIM Nachrichten, deutschsprachige Ergänzung zu SNE EUROSIM Simulation News Europe, pages 3–4, November 1999. [36] Hochleistungsrechenzentrum Stuttgart HLRS. Covise Web Page. http://www.hlrs.de/organization/vis/covise. [37] Michael Holzner, Touraj Gholami, and Horst-Uwe Mader. Virtuelles Crashlabor: Zielsetzung, Anforderungen und Entwicklungsstand. In VDI Berichte 1411: Berechnungen im Automobilbau, Tagung Würzburg. VDI Gesellschaft Fahrzeug und Verkehrstechnik Düsseldorf, September 1998. [38] William M. Hsu, John F. Hughes, and Henry Kaufman. Direct manipulation of freeform deformations. Computer Graphics, 26:177–184, 1992. 148 LITERATURVERZEICHNIS [39] Shi-Min Hu, Hui Zhang, Chew-Lan Tai, and Jia Gua. Direct manipulation of FFD: efficient explicit solutions and decomposible multiple point constrains. The Visual Computer, 17(6):370–379, August 2001. Springer. [40] Christopher Johnson, Steven G. Parker, Charles Hansen, Gordon L. Kindlmann, and Yarden Livnat. Interactive Simulation and Visualization. Computer, 32(12):59–65, 1999. [41] Michael Jung and Ulrich Langer. Methode der finiten Elemente für Ingenieure. Teubner Verlag, 2001. [42] Brian W. Kernighan and Dennis M. Ritchie. The C Programming Language. Prentice Hall, 1988. [43] H.-P. Kersken, A. Schreiber, R. Heinrich, E. Kügeler, A. Mack, J. Neumann, and R. Schäfer. TENT – Eine Softwareintegrationsumgebung für multidisziplinäre Simulationen. In DGLR Jahrestagung, 2002. [44] Leif Kobbelt. Discrete Fairing. In Proceedings of the Seventh IMA Conference on the Mathematics of Surfaces, pages 101–130, 1997. [45] Leif Kobbelt. Discrete fairing and variational subdivision for freeform surface design. The Visual Computer, 16(3-4):142–158, 2000. [46] Leif Kobbelt, Thilo Bareuther, and Hans-Peter Seidel. Multiresolution shape deformations for meshes with dynamic vertex connectivity. Computer Graphics Forum, 19(3):C249–C260, 2000. [47] Leif Kobbelt, Stephan Bischoff, Kolja Kähler, Robert Schneider, Mario Botsch, Christian Rössl, and Jens Vorsatz. Geometric modeling based on polygonal meshes. Research Report MPI-I-2000-4-002, Max-Planck-Institut für Informatik, 2000. [48] Leif Kobbelt, Swen Campagna, Jens Vorsatz, and Hans-Peter Seidel. Interactive multiresolution modeling on arbitrary meshes. In Computer Graphics, volume 32, pages 105–114. ACM SIGGRAPH, 1998. [49] Jan Kraheberger. Interaktive Aufbereitung von vorvernetzten Bauteilgeometrien für die Fahrzeugberechnung. Diplomarbeit, Lehrstuhl für Graphische Datenverarbeitung, IMMD IX, Universität Erlangen, Oktober 1998. [50] Florian Kramer. Passive Sicherheit von Kraftfahrzeugen. Vieweg Verlag, 1998. [51] Sven Kuschfeldt. Effiziente Visualisierungsverfahren zur besseren Erfassung von Crash-Simulationen im Fahrzeugbau. PhD thesis, Universität Erlangen, 1998. LITERATURVERZEICHNIS 149 [52] Sven Kuschfeldt, Thomas Ertl, and Michael Holzner. Efficient visualization of physical and structural properties in crash-worthiness simulations. In Yagel, R. and Hagen, H., editor, Visualization ’97 Proceedings, pages 487–490. IEEE Computer Society Press, 1997. [53] Sven Kuschfeldt, Michael Holzner, Ove Sommer, and Thomas Ertl. Efficient Visualization of Crash-Worthiness Simulations. IEEE Computer Graphics and Applications, 18:60–55, 1998. [54] Apostolos Lerios, Chase D. Garfinkle, and Marc Levoy. Feature-based volume metamorphosis. In Proceedings of the 22nd annual conference on Computer graphics and interactive techniques, pages 449–456. ACM Press, 1995. [55] Erik Lindholm, Mark J. Kligard, and Henry Moreton. A user-programmable vertex engine. In Proceedings of the 28th annual conference on computer graphics and interactive techniques, pages 149–158. ACM Press, 2001. [56] Ron MacCracken and Kenneth I. Joy. Free-form deformations with lattices of arbitrary topology. In Proceedings of the 23rd annual conference on Computer graphics and interactive techniques, pages 181–188. ACM Press, 1996. [57] Gerhard Merziger and Thomas With. Repetitorium der höheren Mathematik. Binomi, 1995. [58] Michael E. Mortenson. Computer Graphics Handbook – Geometry and Mathematics. Industrial Press Inc., 1990. [59] Thomas J. Mowbray and Raphael C. Malveau. CORBA Design Patterns. John Wiley & Sons, 1997. [60] NAG. IRIS Explorer Web Page. http://www.nag.co.uk/Welcome− IEC.html. [61] Gregory M. Nielson, Hans Hagen, and Heinrich Müller. Scientific Visualization: Overviews, Methodologies, and Techniques. IEEE Computer Society, 1997. [62] Robert A. Noble and Gordon J Clapworthy. Direct Manipulation of Surfaces using NURBS-Based Free-Form Deformations. In Proceedings of the International Conference on Information Visualization, pages 238–243, 1999. [63] Object Management Group. Common Object Request Broker Architecture: Core Specification. Technical report, OMG, 2002. [64] Volker Padur and Andreas Schreiber. TENT - Eine Integrations- und Testumgebung für Simulation und Visualisierung. In Proceedings of the 12th Conference on Simulation and Visualization (SimVis), 2001. 150 LITERATURVERZEICHNIS [65] Steven G. Parker, Christopher Johnson, and David Beazley. Computational Steering Software Systems and Strategies. IEEE Computational Science & Engineering, 4(4):50–59, 1997. [66] Les Piegl and Wayne Tiller. The NURBS Book. Springer, 2nd edition, 1997. [67] Alfred Renyi. Wahrscheinlichkeitsrechnung. VEB Deutscher Verlag der Wissenschaften, 1962. [68] Christof Rezk-Salama, Michael Scheuering, Grzegorz Soza, and Günther Greiner. Fast volumetric deformation on general purpose hardware. In Proceedings of the ACM SIGGRAPH/EUROGRAPHICS workshop on on Graphics hardware, pages 17–24. ACM Press, 2001. [69] Richard F. Riesenfeld. Applications of B-spline Approximation to Geometric Problems of Computer-Aided Design. PhD thesis, Syracuse Univ., 1973. [70] Dieter Roller. CAD – Effiziente Anpassungs- und Variantenkonstruktion. Springer, 1995. [71] Dirc Rose, Norbert Frisch, Thomas Rühr, and Thomas Ertl. Interaktive Visualisierung neuer Elemente im virtuellen Automobil-Crashversuch. In Tagungsband SimVis ’02, Magdeburg, pages 215–223, 2002. [72] Lawrence J. Rosenblum, editor. Scientific Visualization: Advances and Challenges. Academic Press, 1994. [73] I.J. Schoenberg. Contributions to the problem of approximation of equidistant data by analytic functions. Quarterly of Applied Mathematics, 4:45–99, 1946. [74] Andreas Schreiber. The Integrated Simulation Environment TENT. Concurrency and Computation: Practice and Experience Vol. 14, Grid Computing environments Special Issue 13-14, 2002. [75] Hans Rudolf Schwarz. Methode der finiten Elemente. Teubner Verlag, 1991. [76] Thomas W. Sederberg and Scott R. Parry. Free-Form Deformation of Solid Geometric Models. Computer Graphics, pages 151–160, August 1986. [77] Robert Sedgewick. Algorithms in C++, Parts 1-4. Addison-Wesley, 1998. [78] John Siegel. Quick Corba 3. John Wiley & Sons, 2001. [79] Silicon Graphics Inc. OpenGL Performer. http://www.sgi.com/software/performer. [80] Silicon Graphics Inc. Cosmo3D Programmer’s Guide, 1997. LITERATURVERZEICHNIS 151 [81] Silicon Graphics Inc. OpenGL Optimizer Programmer’s Guide: An Open API for Large-Model Visualization, 1998. http://www.sgi.com/software/optimizer. [82] Ove Sommer and Thomas Ertl. Geometry and Rendering Optimization for the Interactive Visualization of Crash-Worthiness Simulations. In Proceedings of the Visual Data Exploration and Analysis Conference in IT&T/SPIE Electronic Imaging, pages 124–134, Januar 2000. [83] Ove Sommer and Thomas Ertl. Comparative Visualization of Instabilities in CrashWorthiness Simulations. In Procceedings of EG/IEEE TCVG Symposium on Visualization VisSym ’01, pages 319–328,364, 2001. [84] Bjarne Stroustroup. The C++ Programming Language. Addison-Wesley, 1997. [85] Gabriel Taubin. A signal processing approach to fair surface design. In Computer Graphics, volume 29, pages 351–358. ACM SIGGRAPH, 1995. [86] Clemens-August Thole (Hrsg.). AUTOBENCH: Integrierte Entwicklungsumgebung für virtuelle Automobil-Prototypen. GMD, Juli 2001. http://www.gmd.de/publications/report/0145. [87] Ruofeng Tong, Kazufumi Kaneda, and Hideo Yamashita. B-spline free-form deformation of polygonal object as trimmed Bézier surfaces. The Visual Computer, 18(8):493– 510, 2002. [88] Hank Weghorst and Donald P. Greenberg. Improved Computational Methods for Ray Tracing. ACM Transactions on Graphics (TOG), 3(1):52–69, 1984. [89] Eric Weisstein. Concise Encyclopeida of Mathematics. CRC Press, 2003. [90] Josie Wernecke. The Inventor Mentor. Addison-Wesley, 1994. http://www.sgi.com/software/inventor. [91] Rüdiger Westermann and Thomas Ertl. Efficiently using graphics hardware in volume rendering applications. In Proceedings of the 25th annual conference on Computer graphics and interactive techniques, pages 169–177. ACM Press, 1998. [92] George Wolberg. Digital Image Warping. IEEE Computer Society, 1990. [93] Mason Woo, Jackie Neider, Tom Davis, and Dave Shreiner. OpenGL Programming Guide. Addison-Wesley, 1999. [94] Stefan Zachov. Modellierung von Weichgewebe - Simulation von Deformation und Destruktion - Neue Möglichkeiten in der computergestützten Chirurgie. Shaker Verlag, 1998. 152 LITERATURVERZEICHNIS [95] A. Zarli, V.Amar, F. Diard, M. Marache, and P. Poyet. Bridging the gap between STEP, CORBA and virtual reality technology for the next Building Industry applications generation. In Proceedings of the 4th International Conference on Concurrent Enterprising (ICE), pages 219–229, 1997. [96] Alain Zarli and Virginie Amar. Integrating STEP and CORBA for applications interoperability in the future virtual enterprises computer-based infrastructures. In Proceedings of IASTED International Conference on Intelligent Information Services, pages 309–315, 1997. Danksagung An dieser Stelle möchte ich mich bei all jenen bedanken, die mich während der Arbeiten zu dieser Dissertation unterstützt haben. In erster Linie möchte ich meinem Doktorvater, Prof. Dr. Thomas Ertl danken. Er hat mich in dieser Zeit geduldig motiviert, beraten und ermutigt. Bei meiner Frau Anca möchte ich mich bedanken für ihre moralische Unterstützung. Sie hat mir viel Kraft gegeben. Es war die Uni Erlangen, an der diese Arbeit begonnen wurde. Vielen Dank an die damaligen Kollegen, Matthias Hopf, Christian Teitzel, Kai Horman, Katja Daubert, um nur einige zu nennen. Es war eine schöne Zeit und ich werde die gemeinsamen Küchendienste nicht vergessen. Ich wohnte noch in München, als Martin Schulz mich über die zu besetzende Promotionsstelle benachrichtigte. Ich bin ihm dankbar für diesen Hinweis, ohne den meine Dissertation wohl nicht entstanden wäre. Nach neun Monaten in Erlangen ging es dann nach Stuttgart. Vielen Dank dem gesamten Team, das von Erlangen nach Stuttgart zog, für die gute Gesellschaft. In Stuttgart kamen dann weitere Kollegen hinzu. Insbesondere an Dirc Rose, Martin Rotard, Simon Stegmaier und Kathrin Bidmon vielen Dank für die angenehme Zusammenarbeit. Dank gebührt auch Herrn Horst-Uwe Mader von der Firma BMW, der mit seiner freundlichen Art das Feedback und die Bedürfnisse der Anwender übermittelte und so die Praxistauglichkeit meiner Arbeit sicherstellte. Ulrike Ritzmann, Hermann Kreppein und Martin Schmidt ebenfalls vielen Dank für die rasche Hilfe bei diversen technischen Problemen. Ove Sommer danke ich für die gute Zusammenarbeit und für seine Hilfsbereitschaft. Für die Beiträge ihrer Studienarbeiten danke ich Thomas Piekarski und Jens Künzl. Schließlich danke ich auch allen anderen, die mich unterstützt haben, und die hier nicht namentlich erwähnt sind.