Practical Lab WS 20/21 Programmierpraktikum Numerische Algorithmen
Formoptimierung mit FEniCS
Ziel der Formoptimierung elastischer Strukturen ist es, die optimale Form eines elastischen Objekts zu berechnen, z.B. die Form, die sich bei gegebenen Materialeigenschaften, Volumen und äußeren Kräften am wenigsten verformt. In diesem Programmierpraktikum beschäftigen wir uns mit
- den partiellen Differentialgleichungen der linearen und nichtlinearen Elastizitätstheorie,
- der Beschreibung von Formen durch parametrisierte Transformationen, Phasenfelder und als Niveaumengen,
- der Formulierung des Formoptimierungsproblems als Minimierungsproblem mit einer Differentialgleichung als Nebenbedingung,
- der Berechnung des Gradienten des Zielfunktionals in Bezug auf Variationen der Form,
- und der Implementierung geeigneter Optimierungsstrategien.
Die Implementierung wird in Python auf Basis der FeniCS-Plattform geschehen.
Es wird ein wöchentliches Treffen geben (voraussichtlich online), die Zeit wird zu Semesterbeginn gemeinsam festgelegt. In den Treffen werden abwechselnd neue Programmieraufgaben gestellt, Probleme und Lösungen diskutiert. Programmieraufgaben können in Gruppen von zwei bis drei Personen bearbeitet werden.
Das Praktikum wird für Bachelor- (P2E1) und Master-Studierende (P4E1) angeboten. Die meisten Termine werden sich an alle Studierenden richten, es wird einzelne Termine mit Grundlagen für Bachelor-Studierende und mit weiterführenden Inhalten für Master-Studierende geben. Die Programmieraufgaben werden sich in Tiefe und Schwierigkeitsgrad unterscheiden und an verschiedene Vorkenntnisse angepasst werden können.
Zur Vereinfachung gibt es nur einen gemeinsamen eCampus-Kurs, bitte melden Sie sich für weitere Informationen dort an.
Beispiel
Wir betrachten einen Balken, der links an der Wand befestigt ist und rechts ein Gewicht trägt. Der Balken verformt sich elastisch (er verbiegt sich nach unten). Nun ist die Frage der Formoptimierung: Welche Form sollte der Baken haben, um sich, unter Verwendung von möglichst wenig Material, möglichst wenig zu verformen?
Dazu beschreiben wir die Form durch eine Funktion, die im Balken den Wert 1 annimmt, außerhalb den Wert -1, mit einem glatten Übergang dazwischen.
Außerdem müssen wir das Funktional definieren das minimiert werden soll: In unserem Beispiel könnte dies eine gewichtete Summe aus der Verschiebung an der Spitze des Balkens, dem Volumen und der Oberfläche des Balkens sein.
Die folgenden Bilder zeigen das Resultat eines Formoptimierungsverfahrens mit verschiedenen Faktoren vor dem Volumenterm im Zielfunktionial. Eine geringe Gewichtung des Volumens erlaubt feinere Strukturen in der optimalen Form. (rot = 1 = Balken, blau = -1 = Luft)