Rovinné úlohy Klasická formulace úlohy −∇ · (p∇u) + qu = f v Ω Okrajové podmínky: Dirichletova: u = g na Γ1 Newtonova (Neumanova pro α = 0): −p∂u ∂n = αu − β na Γ2 Γ1 ∩ Γ2 = ∅, ¯Γ1 ∪ ¯Γ2 = Γ. Slabá formulace úlohy Ω [p∇u · ∇v + quv]dxdy + Γ2 αuv ds = Ω fv dxdy + Γ2 βv ds a(u, v) = L(v) ∀v. Jiří Zelinka Pokročilé numerické metody 1II rovinné úlohy II 1 / 12 Metoda konečných prvků Oblast triangulujeme a pro každý uzel triangulace (vrchol) Pi je definována jedna bázová funkce wi (spojitá a po částech lineární) nenulová na polygonu Ei tvořeném sousedními uzly. Pojmy a ozančení: Elementy (prvky): e, resp. ei , Ne je počet elementů. Vrcholy elementů, uzly, P, resp. Pi = (xi , yi ), všech uzlů je NU, na ¯Γ1 je jich N1, zbývajících je N0, uzly mimo ¯Γ1 mají indexy 1, . . . , N0 uzly na ¯Γ1 mají indexy N0 + 1, . . . , NU. Strany na ¯Γ2 označíme S, resp. Si , jejich počet NS . Pro každý element e známe jeho vrcholy Pe 1 , Pe 3 , Pe 3 . Jiří Zelinka Pokročilé numerické metody 1II rovinné úlohy II 2 / 12 Aproximace slabé formulace ah(u, v) = Ne i=1 Iei (p∇u · ∇v + quv) + NS j=1 ISj (αuv), Lh(v) = Ne i=1 Iei (fv) + NS j=1 ISj (βv). 0 = ah(U, V ) − Lh(V ) = = N0 i=1 Vi N0 j=1 ah(wj , wi )Uj − Lh(wi ) − NU j=N0+1 ah(wj , wi )g(Pj ) = = N0 i=1 Vi N0 j=1 kij Uj − Fi = VT [KU − F]. Jiří Zelinka Pokročilé numerické metody 1II rovinné úlohy II 3 / 12 Elementární matice Rovnice pro jeden element Buď e element s vrcholy Pe 1 , Pe 3 , Pe 3 , Pe i = (xe i , ye i ). Na e se využívají bázové funkce we 1 , we 3 , we 3 . Označme Ne = Ne (x, y) = (we 1 (x, y), we 2 (x, y), we 3 (x, y)), we i (x, y) = ae i x + be i y + ce i , i = 1, 2, 3. Ue = (Ue 1 , Ue 2 , Ue 3 )T , Ue i = U(Pe i ), V e = (V e 1 , V e 2 , V e 3 )T . Na e platí: U = Ue 1 we 1 + Ue 2 we 2 + Ue 3 we 3 = Ne Ue , podobně V = Ne V e . Označme Be gradient Ne : Be = ∇Ne = ae 1 ae 2 ae 3 be 1 be 2 be 3 , tedy ∇U = ∇(Ne Ue ) = Be Ue , ∇V = ∇(Ne V e ) = Be V e . Jiří Zelinka Pokročilé numerické metody 1II rovinné úlohy II 4 / 12 Elementární matice Rovnice pro jeden element Buď e element s vrcholy Pe 1 , Pe 3 , Pe 3 , Pe i = (xe i , ye i ). Na e se využívají bázové funkce we 1 , we 3 , we 3 . Označme Ne = Ne (x, y) = (we 1 (x, y), we 2 (x, y), we 3 (x, y)), we i (x, y) = ae i x + be i y + ce i , i = 1, 2, 3. Ue = (Ue 1 , Ue 2 , Ue 3 )T , Ue i = U(Pe i ), V e = (V e 1 , V e 2 , V e 3 )T . Na e platí: U = Ue 1 we 1 + Ue 2 we 2 + Ue 3 we 3 = Ne Ue , podobně V = Ne V e . Označme Be gradient Ne : Be = ∇Ne = ae 1 ae 2 ae 3 be 1 be 2 be 3 , tedy ∇U = ∇(Ne Ue ) = Be Ue , ∇V = ∇(Ne V e ) = Be V e . Jiří Zelinka Pokročilé numerické metody 1II rovinné úlohy II 4 / 12 Elementární matice Rovnice pro jeden element Buď e element s vrcholy Pe 1 , Pe 3 , Pe 3 , Pe i = (xe i , ye i ). Na e se využívají bázové funkce we 1 , we 3 , we 3 . Označme Ne = Ne (x, y) = (we 1 (x, y), we 2 (x, y), we 3 (x, y)), we i (x, y) = ae i x + be i y + ce i , i = 1, 2, 3. Ue = (Ue 1 , Ue 2 , Ue 3 )T , Ue i = U(Pe i ), V e = (V e 1 , V e 2 , V e 3 )T . Na e platí: U = Ue 1 we 1 + Ue 2 we 2 + Ue 3 we 3 = Ne Ue , podobně V = Ne V e . Označme Be gradient Ne : Be = ∇Ne = ae 1 ae 2 ae 3 be 1 be 2 be 3 , tedy ∇U = ∇(Ne Ue ) = Be Ue , ∇V = ∇(Ne V e ) = Be V e . Jiří Zelinka Pokročilé numerické metody 1II rovinné úlohy II 4 / 12 Elementární matice Rovnice pro jeden element Buď e element s vrcholy Pe 1 , Pe 3 , Pe 3 , Pe i = (xe i , ye i ). Na e se využívají bázové funkce we 1 , we 3 , we 3 . Označme Ne = Ne (x, y) = (we 1 (x, y), we 2 (x, y), we 3 (x, y)), we i (x, y) = ae i x + be i y + ce i , i = 1, 2, 3. Ue = (Ue 1 , Ue 2 , Ue 3 )T , Ue i = U(Pe i ), V e = (V e 1 , V e 2 , V e 3 )T . Na e platí: U = Ue 1 we 1 + Ue 2 we 2 + Ue 3 we 3 = Ne Ue , podobně V = Ne V e . Označme Be gradient Ne : Be = ∇Ne = ae 1 ae 2 ae 3 be 1 be 2 be 3 , tedy ∇U = ∇(Ne Ue ) = Be Ue , ∇V = ∇(Ne V e ) = Be V e . Jiří Zelinka Pokročilé numerické metody 1II rovinné úlohy II 4 / 12 Elementární matice Rovnice pro jeden element Buď e element s vrcholy Pe 1 , Pe 3 , Pe 3 , Pe i = (xe i , ye i ). Na e se využívají bázové funkce we 1 , we 3 , we 3 . Označme Ne = Ne (x, y) = (we 1 (x, y), we 2 (x, y), we 3 (x, y)), we i (x, y) = ae i x + be i y + ce i , i = 1, 2, 3. Ue = (Ue 1 , Ue 2 , Ue 3 )T , Ue i = U(Pe i ), V e = (V e 1 , V e 2 , V e 3 )T . Na e platí: U = Ue 1 we 1 + Ue 2 we 2 + Ue 3 we 3 = Ne Ue , podobně V = Ne V e . Označme Be gradient Ne : Be = ∇Ne = ae 1 ae 2 ae 3 be 1 be 2 be 3 , tedy ∇U = ∇(Ne Ue ) = Be Ue , ∇V = ∇(Ne V e ) = Be V e . Jiří Zelinka Pokročilé numerické metody 1II rovinné úlohy II 4 / 12 Elementární matice Rovnice pro jeden element Buď e element s vrcholy Pe 1 , Pe 3 , Pe 3 , Pe i = (xe i , ye i ). Na e se využívají bázové funkce we 1 , we 3 , we 3 . Označme Ne = Ne (x, y) = (we 1 (x, y), we 2 (x, y), we 3 (x, y)), we i (x, y) = ae i x + be i y + ce i , i = 1, 2, 3. Ue = (Ue 1 , Ue 2 , Ue 3 )T , Ue i = U(Pe i ), V e = (V e 1 , V e 2 , V e 3 )T . Na e platí: U = Ue 1 we 1 + Ue 2 we 2 + Ue 3 we 3 = Ne Ue , podobně V = Ne V e . Označme Be gradient Ne : Be = ∇Ne = ae 1 ae 2 ae 3 be 1 be 2 be 3 , tedy ∇U = ∇(Ne Ue ) = Be Ue , ∇V = ∇(Ne V e ) = Be V e . Jiří Zelinka Pokročilé numerické metody 1II rovinné úlohy II 4 / 12 Ie (p∇U · ∇V + qUV ) = = Ie ((Be V e )T pBe Ue + (Ne V e )T qNe Ue ) = = Ie ((V e )T (Be )T pBe Ue + (V e )T (Ne )T qNe Ue ) = = (V e )T Ie ((Be )T pBe + (Ne )T qNe )Ue = = (V e )T (Ke 1 + Ke 2 )Ue = (V e )T Ke Ue Ke se nazývá elementární matice. Pro výpočet Ke 1 používáme kvadraturní formuli s těžištěm elementu Te = 1 3 (Pe 1 + Pe 2 + Pe 3 ): Ke 1 = Se p(xT , yT )   ae 1ae 1 + be 1be 1 ae 1ae 2 + be 1be 2 ae 1ae 3 + be 1be 3 ae 2ae 1 + be 2be 1 ae 2ae 2 + be 2be 2 ae 2ae 3 + be 2be 3 ae 3ae 1 + be 3be 1 ae 3ae 2 + be 3be 2 ae 3ae 3 + be 3be 3   Jiří Zelinka Pokročilé numerické metody 1II rovinné úlohy II 5 / 12 Ie (p∇U · ∇V + qUV ) = = Ie ((Be V e )T pBe Ue + (Ne V e )T qNe Ue ) = = Ie ((V e )T (Be )T pBe Ue + (V e )T (Ne )T qNe Ue ) = = (V e )T Ie ((Be )T pBe + (Ne )T qNe )Ue = = (V e )T (Ke 1 + Ke 2 )Ue = (V e )T Ke Ue Ke se nazývá elementární matice. Pro výpočet Ke 1 používáme kvadraturní formuli s těžištěm elementu Te = 1 3 (Pe 1 + Pe 2 + Pe 3 ): Ke 1 = Se p(xT , yT )   ae 1ae 1 + be 1be 1 ae 1ae 2 + be 1be 2 ae 1ae 3 + be 1be 3 ae 2ae 1 + be 2be 1 ae 2ae 2 + be 2be 2 ae 2ae 3 + be 2be 3 ae 3ae 1 + be 3be 1 ae 3ae 2 + be 3be 2 ae 3ae 3 + be 3be 3   Jiří Zelinka Pokročilé numerické metody 1II rovinné úlohy II 5 / 12 Ie (p∇U · ∇V + qUV ) = = Ie ((Be V e )T pBe Ue + (Ne V e )T qNe Ue ) = = Ie ((V e )T (Be )T pBe Ue + (V e )T (Ne )T qNe Ue ) = = (V e )T Ie ((Be )T pBe + (Ne )T qNe )Ue = = (V e )T (Ke 1 + Ke 2 )Ue = (V e )T Ke Ue Ke se nazývá elementární matice. Pro výpočet Ke 1 používáme kvadraturní formuli s těžištěm elementu Te = 1 3 (Pe 1 + Pe 2 + Pe 3 ): Ke 1 = Se p(xT , yT )   ae 1ae 1 + be 1be 1 ae 1ae 2 + be 1be 2 ae 1ae 3 + be 1be 3 ae 2ae 1 + be 2be 1 ae 2ae 2 + be 2be 2 ae 2ae 3 + be 2be 3 ae 3ae 1 + be 3be 1 ae 3ae 2 + be 3be 2 ae 3ae 3 + be 3be 3   Jiří Zelinka Pokročilé numerické metody 1II rovinné úlohy II 5 / 12 Pro výpočet koeficientů ae i , be i a ce i využijeme vlastnost bázových funkcí we i (xe j , ye j ) = 0 pro i ̸= j 1 pro i = j Dostáváme systém rovnic   xe 1 ye 1 1 xe 2 ye 2 1 xe 3 ye 3 1     ae 1 ae 2 ae 3 be 1 be 2 be 3 ce 1 ce 2 ce 3   =   1 0 0 0 1 0 0 0 1   Determinant první matice je de = (ye 3 − ye 1 )(xe 2 − xe 1 ) − (xe 3 − xe 1 )(ye 2 − ye 1 ), |de | = 2Se . Pak ae 1 = (ye 2 − ye 3 )/de be 1 = (xe 3 − xe 2 )/de ce 1 = (xe 2 ye 3 − ye 2 xe 3 )/de ae 2 = (ye 3 − ye 1 )/de be 2 = (xe 1 − xe 3 )/de ce 2 = (xe 3 ye 1 − ye 3 xe 1 )/de ae 2 = (ye 1 − ye 2 )/de be 2 = (xe 2 − xe 1 )/de ce 2 = (xe 1 ye 2 − ye 1 xe 2 )/de Jiří Zelinka Pokročilé numerické metody 1II rovinné úlohy II 6 / 12 Pro výpočet koeficientů ae i , be i a ce i využijeme vlastnost bázových funkcí we i (xe j , ye j ) = 0 pro i ̸= j 1 pro i = j Dostáváme systém rovnic   xe 1 ye 1 1 xe 2 ye 2 1 xe 3 ye 3 1     ae 1 ae 2 ae 3 be 1 be 2 be 3 ce 1 ce 2 ce 3   =   1 0 0 0 1 0 0 0 1   Determinant první matice je de = (ye 3 − ye 1 )(xe 2 − xe 1 ) − (xe 3 − xe 1 )(ye 2 − ye 1 ), |de | = 2Se . Pak ae 1 = (ye 2 − ye 3 )/de be 1 = (xe 3 − xe 2 )/de ce 1 = (xe 2 ye 3 − ye 2 xe 3 )/de ae 2 = (ye 3 − ye 1 )/de be 2 = (xe 1 − xe 3 )/de ce 2 = (xe 3 ye 1 − ye 3 xe 1 )/de ae 2 = (ye 1 − ye 2 )/de be 2 = (xe 2 − xe 1 )/de ce 2 = (xe 1 ye 2 − ye 1 xe 2 )/de Jiří Zelinka Pokročilé numerické metody 1II rovinné úlohy II 6 / 12 Pro výpočet koeficientů ae i , be i a ce i využijeme vlastnost bázových funkcí we i (xe j , ye j ) = 0 pro i ̸= j 1 pro i = j Dostáváme systém rovnic   xe 1 ye 1 1 xe 2 ye 2 1 xe 3 ye 3 1     ae 1 ae 2 ae 3 be 1 be 2 be 3 ce 1 ce 2 ce 3   =   1 0 0 0 1 0 0 0 1   Determinant první matice je de = (ye 3 − ye 1 )(xe 2 − xe 1 ) − (xe 3 − xe 1 )(ye 2 − ye 1 ), |de | = 2Se . Pak ae 1 = (ye 2 − ye 3 )/de be 1 = (xe 3 − xe 2 )/de ce 1 = (xe 2 ye 3 − ye 2 xe 3 )/de ae 2 = (ye 3 − ye 1 )/de be 2 = (xe 1 − xe 3 )/de ce 2 = (xe 3 ye 1 − ye 3 xe 1 )/de ae 2 = (ye 1 − ye 2 )/de be 2 = (xe 2 − xe 1 )/de ce 2 = (xe 1 ye 2 − ye 1 xe 2 )/de Jiří Zelinka Pokročilé numerické metody 1II rovinné úlohy II 6 / 12 Pokud označíme re = (ye 2 − ye 3 )(ye 3 − ye 1 ) − (xe 3 − xe 2 )(xe 1 − xe 3 ) se = (ye 2 − ye 3 )(ye 1 − ye 2 ) − (xe 3 − xe 2 )(xe 2 − xe 1 ) te = (ye 3 − ye 1 )(ye 1 − ye 2 ) − (xe 1 − xe 3 )(xe 2 − xe 1 ) platí Ke 1 = p(xT , yT ) 2|de|   −re − se re se re −re − te te se te −se − te   Jiří Zelinka Pokročilé numerické metody 1II rovinné úlohy II 7 / 12 Pro výpočet Ke 2 můžeme využít kvadraturní formuli pro hodnoty ve vrcholech trojúhelníku, pak dostaneme Ke 2 = |de | 6   q(xe 1 , ye 1 ) 0 0 0 q(xe 2 , ye 2 ) 0 0 0 q(xe 3 , ye 3 )   , nebo formuli pro těžiště, pak vyjde Ke 2 = |de | 18 q(xe T , ye T )   1 1 1 1 1 1 1 1 1   . Pro integrál na pravé straně rovnice dostáváme Ie (fV ) = Ie ((Ne V e )T f ) = (V e )T Ie ((Ne )T f ) = (V e )T Fe , pak podle použité kvadraturní formule Fe = 1 6 |de |(f (Pe 1 ), f (Pe 2 ), f (Pe 3 ))T nebo Fe = 1 6 |de |f (Te )(1, 1, 1)T . Jiří Zelinka Pokročilé numerické metody 1II rovinné úlohy II 8 / 12 Pro výpočet Ke 2 můžeme využít kvadraturní formuli pro hodnoty ve vrcholech trojúhelníku, pak dostaneme Ke 2 = |de | 6   q(xe 1 , ye 1 ) 0 0 0 q(xe 2 , ye 2 ) 0 0 0 q(xe 3 , ye 3 )   , nebo formuli pro těžiště, pak vyjde Ke 2 = |de | 18 q(xe T , ye T )   1 1 1 1 1 1 1 1 1   . Pro integrál na pravé straně rovnice dostáváme Ie (fV ) = Ie ((Ne V e )T f ) = (V e )T Ie ((Ne )T f ) = (V e )T Fe , pak podle použité kvadraturní formule Fe = 1 6 |de |(f (Pe 1 ), f (Pe 2 ), f (Pe 3 ))T nebo Fe = 1 6 |de |f (Te )(1, 1, 1)T . Jiří Zelinka Pokročilé numerické metody 1II rovinné úlohy II 8 / 12 Elementární matice pro strany S na Γ2 jsou dány jednorozměrnými kvadraturními formulemi. Buď S strana určena uzly PS 1 a PS 2 , wS 1 a wS 2 jsou restrikce příslušných bázových funkcí na S. Označme NS = NS (x, y) = (wS 1 (x, y), wS 2 (x, y)), US = (US 1 , US 2 )T = (U(PS 1 ), U(PS 2 ))T , V S = (V S 1 , V S 2 )T = (V (PS 1 ), V (PS 2 ))T . Pak na S máme U = NS US , V = NS V S a IS (αUV ) = (V S )T IS ((NS )T αNS )US = (V S )T KS US , IS (βV ) = (V S )T IS ((NS )T β) = (V S )T FS . Jiří Zelinka Pokročilé numerické metody 1II rovinné úlohy II 9 / 12 Elementární matice pro strany S na Γ2 jsou dány jednorozměrnými kvadraturními formulemi. Buď S strana určena uzly PS 1 a PS 2 , wS 1 a wS 2 jsou restrikce příslušných bázových funkcí na S. Označme NS = NS (x, y) = (wS 1 (x, y), wS 2 (x, y)), US = (US 1 , US 2 )T = (U(PS 1 ), U(PS 2 ))T , V S = (V S 1 , V S 2 )T = (V (PS 1 ), V (PS 2 ))T . Pak na S máme U = NS US , V = NS V S a IS (αUV ) = (V S )T IS ((NS )T αNS )US = (V S )T KS US , IS (βV ) = (V S )T IS ((NS )T β) = (V S )T FS . Jiří Zelinka Pokročilé numerické metody 1II rovinné úlohy II 9 / 12 Elementární matice pro strany S na Γ2 jsou dány jednorozměrnými kvadraturními formulemi. Buď S strana určena uzly PS 1 a PS 2 , wS 1 a wS 2 jsou restrikce příslušných bázových funkcí na S. Označme NS = NS (x, y) = (wS 1 (x, y), wS 2 (x, y)), US = (US 1 , US 2 )T = (U(PS 1 ), U(PS 2 ))T , V S = (V S 1 , V S 2 )T = (V (PS 1 ), V (PS 2 ))T . Pak na S máme U = NS US , V = NS V S a IS (αUV ) = (V S )T IS ((NS )T αNS )US = (V S )T KS US , IS (βV ) = (V S )T IS ((NS )T β) = (V S )T FS . Jiří Zelinka Pokročilé numerické metody 1II rovinné úlohy II 9 / 12 Pro lichoběžníkovou formuli dostaneme KS = 1 2 dS α(PS 1 ) 0 0 α(PS 2 ) , FS = 1 2 dS β(PS 1 ) β(PS 2 ) , kde dS je délka strany, pro obdélníkovou formuli KS = 1 2 dS α(TS ) 1 1 1 1 , FS = 1 2 dS β(TS ) 1 1 pro TS střed strany S. Jiří Zelinka Pokročilé numerické metody 1II rovinné úlohy II 10 / 12 Sestavení globání matice K Vzhledem k tomu, že integrování je aditivní, dostaneme globání matici tuhosti K jako součet elementárních matic na příslušných pozicích. Algoritmus: Matici K vytvoříme jako nulovou čtvercovou matici řádu N0. Pro každý element e vytvoříme matice Ke 1 a Ke 2 , které připočteme ke K na pozice (řadkové a sloupcové) odpovídájící skutečným indexům vrcholů elementu (příslušných uzlů). Hodnoty pro uzly z ¯Γ1 (známé hodnoty funkce U) převádíme na pravou stranu rovnice – připočítáváme k vektoru, který podobně vytváříme z F. Stejný postup provádíme pro každou stranu S ∈ Γ2. Jiří Zelinka Pokročilé numerické metody 1II rovinné úlohy II 11 / 12 Sestavení globání matice K Vzhledem k tomu, že integrování je aditivní, dostaneme globání matici tuhosti K jako součet elementárních matic na příslušných pozicích. Algoritmus: Matici K vytvoříme jako nulovou čtvercovou matici řádu N0. Pro každý element e vytvoříme matice Ke 1 a Ke 2 , které připočteme ke K na pozice (řadkové a sloupcové) odpovídájící skutečným indexům vrcholů elementu (příslušných uzlů). Hodnoty pro uzly z ¯Γ1 (známé hodnoty funkce U) převádíme na pravou stranu rovnice – připočítáváme k vektoru, který podobně vytváříme z F. Stejný postup provádíme pro každou stranu S ∈ Γ2. Jiří Zelinka Pokročilé numerické metody 1II rovinné úlohy II 11 / 12 Domácí úkol Pro čtvercovou oblast Ω, jejíž dolní stranu tvoří Γ2 (zbytek Γ1) s pravidelnou tringulací (viz obrázek) sestavte a vyřešte systém rovnic pro Laplaceovu rovnici −∆u = 0 s okrajovou podmínkou u(x, y) = x na Γ1, ∂u ∂n = 0 (α = β = 0) na Γ2. Jiří Zelinka Pokročilé numerické metody 1II rovinné úlohy II 12 / 12