Adaptive Finite Elemente in 2D Torsten Keßler Universität des Saarlandes 29. Januar 2016 Motivation verkleinere (uniform) Dreiecke → kleinerer Fehler Probleme I I Idee Rechenzeit h2 = 12 h1 DoF2 ≈ 4 DoF1 Verfeinerung auch dort, wo sie eventuell unnötig ist. Schätze den Fehler auf jedem Dreieck und wähle „passende“ Dreiecke für die Verfeinerung aus. Schema Diese Überlegung führt zum folgenden Schema: Löse Verfeinere Schätze Markiere Fragen I In welcher Norm soll der Fehler geschätzt werden? I Was ist ein „guter“ Schätzer? I Auf welche Art sollen Dreiecke zur Verfeinerung ausgewählt werden, damit Konvergenz gesichert ist? Modellproblem Sei Ω ⊂ R2 ein Polygon und ΓD , ΓN ⊂ ∂Ω mit ΓD ∪ ΓN = ∂Ω. Löse für c ∈ R>0 , f ∈ L2 (Ω) und g ∈ L2 (ΓN ): −∆u + cu = f u=0 ∂u =g ∂n ΓD ΓN Ω in Ω auf ΓD auf ΓN Variationsformulierung Mit V = {v ∈ H 1 (Ω); γv Γ = 0} und D Z a : V × V → R; (u, v ) 7→ h∇u, ∇v i + cuv dλ, Ω sowie Z ϕ : V → R; v 7→ Ω fv dλ + Z ΓN Finde u ∈ V mit: ∀v ∈ V : a(u, v ) = ϕ(v ) gv dS. Löse Verfeinere Schätze Markiere Diskretisierung T = (Ti )ni=1 reguläre Triangulierung von Ω und K = (Kj )m j=1 die Kanten der Dreiecke. Für alle i ∈ {1, ... , n} sind ni das äußere Normalenfeld und hi der Durchmesser von Ti . Für alle j ∈ {1, ... , m} ist lj die Länge der Kante Kj . ΓD ΓN Ω Diskretisierung Sei Vh ⊂ V ein endlichdimensionaler UVR, dessen Elemente aus C (Ω) sind und eingeschränkt auf alle Elemente von T Polynome sind. Dann gibt es ein eindeutiges uh ∈ Vh mit ∀vh ∈ Vh : a(uh , vh ) = ϕ(vh ) Löse Verfeinere Schätze Markiere Tafelanschrift Triangulierung ΓD ΓN Ω Triangulierung ΓD ΓN Ω Sprung ∇ϕi ϕi xi−1 xi xi+1 Herleitung des Schätzers Mit den Definitionen von der Tafel folgt für alle v ∈ V : a(e, v ) = n Z X i=1 Ti ri v dλ + m Z X j=1 Rj v dS. Kj Aus der Fundamentalorthogonalität folgt: 0 = a(e, Πh v ) = n Z X i=1 Ti ri Πh v dλ + m Z X j=1 Kj Rj Πh v dS. Herleitung des Schätzers Z Z m X |a(e, v )| ≤ ri (v − Πh v ) dλ + Rj (v − Πh v ) dS i=1 j=1 Kj Ti n X Herleitung des Schätzers Z Z m X |a(e, v )| ≤ ri (v − Πh v ) dλ + Rj (v − Πh v ) dS i=1 j=1 Kj Ti n X ≤ n X i=1 kri kL2 (Ti ) kv − Πh v kL2 (Ti ) + m X j=1 kRj kL2 (Kj ) kv − Πh v kL2 (Kj ) Herleitung des Schätzers Z Z m X |a(e, v )| ≤ ri (v − Πh v ) dλ + Rj (v − Πh v ) dS i=1 j=1 Kj Ti n X ≤ n X kri kL2 (Ti ) kv − Πh v kL2 (Ti ) + i=1 ≤ C kv kH 1 (Ω) m X kRj kL2 (Kj ) kv − Πh v kL2 (Kj ) j=1 n X hi2 kri k2 L2 (Ti ) i=1 + m X j=1 1 2 lj kRj k2L2 (Kj ) Herleitung des Schätzers Setze e = u − uh in die Abschätzung ein: kek2E = a(e, e) ≤ C kekH 1 (Ω) n X hi2 kri k2L2 (Ti ) i=1 + m X 1 2 lj kRj k2L2 (Kj ) j=1 Da k−kE und k−kH 1 (Ω) äquivalent sind, folgt schlussendlich: kekE ≤ C n X i=1 hi2 kri k2L2 (Ti ) + m X j=1 1 2 lj kRj k2L2 (Kj ) . Schätzer in der Energienorm Sei T = (Ti )ni=1 eine reguläre Triangulierung von Ω und K = (Kj )m j=1 die Kanten der Dreiecke. 1 X 2 ηi = hi2 kri k2L2 (Ti ) + lj kRj k2L2 (Kj ) i = 1, ... , n Kj ∈K Kj ⊂∂Ti Dabei sind (ri )ni=1 die inneren Residuen und (Rj )m j=1 die Randresiduen. Schätzer in der Energienorm Dann gelten die Abschätzungen für eine Konstante C > 0: ku − uh kE ≤ C η, η= n X !1 2 ηi2 i=1 und n η≤ 1 X X 1 2 ku − uh k2E + hi2 kf − f k2L2 (Ti ) + lj kg − gk2L2 (Kj ) . C i=1 Kj ∈K Kj ⊂Ti ∩ΓN Schätzer in der L∞ –Norm Mit den Bezeichnungen und bei genügend regulären Funktionen sei n m i=1 j=1 η∞ = max hi kri kL∞ (Ti ) + max lj kRj kL∞ (Kj ) . Dann gilt 2 n ku − uh kL∞ (Ω) ≤ C log max hi η∞ i=1 und η∞ ≤ 1 n ku − uh kL∞ (Ω) + max hi2 kf − f kL∞ (Ti ) i=1 C Löse Verfeinere Schätze Markiere Auswahl der Dreiecke Es gibt zahlreiche Ansätze zur Auswahl der zu verfeinernden Dreiecke. n Sei ηmax = max ηi und ϑ, ν ∈ [0, 1] Parameter. i=1 Strategien I I Einfachste Strategie: Markiere alle Dreiecke Ti ∈ T , für die ηi ≥ ϑηmax ist. Dörflers Strategie sucht kleinstmögliche Teilmenge I von {1, ... , n}, so dass: !1 2 X i∈I ηi2 ≥ (1 − ϑ)η. Dörflers Strategie sum ← 0, µ ← 1 while sum < (1 − ϑ)2 η 2 do µ←µ−ν for i = 1 to n do if Ti not marked then if ηi > µηmax then mark Ti sum ← sum + ηi2 end if end if end for end while Löse Verfeinere Schätze Markiere Netzverfeinerung Halbiere die markierten Dreiecke, so dass die entstandene Triangulierung regulär ist. Wichtig Randknoten müssen beim Auflösen von hängenden Knoten (Knoten auf Kanten) unberührt bleiben. Implementierung Löse mit FreeFEM++ Verfeinere mit Triangle Schätze mit FreeFEM++ Markiere mit eigenem Programm Implementierung von „Löse“ und „Schätze“ f e s p a c e Vh(Th , P1) ; f e s p a c e Ph(Th , P0) ; Vh u , v ; Ph etaK ; // L ö s e p r o b l e m p o i s s o n ( u , v )= i n t 2 d (Th) ( c *u* v+dx ( u ) * dx ( v )+dy ( u ) * dy ( v ) ) −i n t 2 d (Th) ( f * v ) − i n t 1 d (Th) ( g* v ) ; // S c h ä t z e v a r f ComputeEta ( unused , c h i ) =i n t 2 d (Th) ( c h i * s q u a r e ( h T r i a n g l e * ( c *u+dxx ( u )+dyy ( u )+f ) ) ) +i n t a l l e d g e s (Th) ( c h i * lenEdge * s q u a r e ( jump ( dx ( u ) *N. x+dy ( u ) *N. y ) ) ) ; Implementierung von „Markiere“ Das Programm liest eine msh-Datei (z.B. Saarland.1.msh) und eine Datei mit dem Fehlerschätzer (Saarland.1.eta) ein und gibt 4 Dateien aus: Saarland . 1 . node Saarland . 1 . e l e Saarland . 1 . p o l y Saarland . 1 . area #Knoten #D r e i e c k e #Rand #Maximale F l ä c h e Implementierung von „Verfeinere“ Das Programm Triangle wird aufgerufen . / t r i a n g l e −pra Saarland . 1 Als Ausgabe erhält man die Dateien Saarland . 2 . node Saarland . 2 . e l e Saarland . 2 . p o l y #Knoten #D r e i e c k e #Rand Steuerung durch FreeFem++ s t r i n g base = ” S a a r l a n d ” ; int n = 10; f o r ( k=1;k<=n ; k++){ u = u; etaK = etaK ; // L ö s e poisson ; // S c h ä t z e E r r o r E s t i m a t i o n (Th , Vh , Ph) ; E x p o r t E r r o r ( etaK , base , k ) ; // M a r k i e r e WriteMesh (Th , base , k ) ; D o e r f l e r S t r a t e g y ( base , k , nu , theta ) ; // V e r f e i n e r e TriangleAdaptMesh ( base , k ) ; ReadAdaptedMesh (Th , base , k ) ; } Beispiel Sei Ω =]0, 1[2 \[0,5, 1[2 und c = 1 · 10−10 . −∆u(x , y ) + cu(x , y ) = x − y ∀(x , y ) ∈ Ω ∂u = 0 auf Γ. ∂n Ω Ausgangsnetz DoF ≈ 200 ηmin ηmax Vergleich uniform und adaptiv DoF ≈ 250 uniform adaptiv Vergleich uniform und adaptiv DoF ≈ 300 uniform adaptiv Vergleich uniform und adaptiv DoF ≈ 440 uniform adaptiv Konvergenz lineare Ansatzfunktionen ϑ = 0,6 und ν = 0,05 uniform adaptiv 10−0,8 η 10−1 3 10−1,2 1 10−1,4 1 2 10−1,6 102 103 DoF Konvergenz quadratische Ansatzfunktionen ϑ = 0,6 und ν = 0,05 uniform adaptiv 10−1 η 1 3 10−2 1 1 103 DoF 104 Konvergenz I I suboptimale Konvergenz O h2/3 des Verfahrens mit uniformer Netzverfeinerung, da die Lösung nicht in H 2 (Ω) liegt. optimale Konvergenz des adaptiven Verfahrens. Zusammenfassung I I AFEM sinnvoll bei großen lokalen Fehlern, etwa durch Singularitäten. Fehlerschätzer in der Energienorm ergibt sich aus Variationsformulierung und Eigenschaften des (Quasi–) Interpolationsoperators. I Eignet sich zum Schätzen des lokalen Fehlers. I Verschiedene Strategien zum Markieren und Verfeinern. I Es gibt auch Fehlerschätzer für andere Normen. Anhang Tei ΓD ΓN ei T Ω Vergleich uniform und adaptiv DoF ≈ 540 uniform adaptiv Vergleich uniform und adaptiv DoF ≈ 980 uniform adaptiv Vergleich uniform und adaptiv DoF ≈ 4200 uniform adaptiv