Andrej Novak
Sveučilište u Dubrovniku |
1Uvod
Metoda konačnih elemenata je jedna od najpopularnijih numeričkih metoda za rješavanje parcijalnih diferencijalnih jednadžbi. Cilj ovog rada je na jednostavan način, kroz primjere, prezentirati metodu konačnih elemenata. U prvom dijelu rada je opisana Galerkinova metoda te je kroz jednostavan primjer skrenuta pozornost na opasnosti prilikom numeričke implementacije. U središnjem dijelu rada je opisana metoda konačnih elemenata kao poseban slučaj Galerkinove metode, a kroz primjer je dano numerički prihvatljivije rješenje primjera iz prvog dijela rada, samo što je jedan rub ostavljen slobodnim kako bi se prikazala implementacija raznih rubnih uvjeta. U završnom dijelu rada su dane neke ideje o implementaciji metode konačnih elementa na problemima koji uključuju više derivacije te par komentara vrijednih za praktičnu implementaciju.
2Galerkinova metoda
U ovom odjeljku ćemo postaviti scenu za metodu konačnih elemenata. Započinjemo kratkim opisom Galerkinove metode. Neka je V Hilbertov prostor, a(⋅,⋅):V×V→R bilinearna forma koja je ograničena,
|a(u,v)|≤M‖u‖V‖v‖V ∀u,v∈V
i V-eliptična,
a(v,v)≥c‖v‖2V ∀v∈V
te l ograničeni linearni funkcional. Promatramo problem
Prema Lax-Milgramovoj lemi, varijacijski problem (1) ima jedinstveno rješenje. Općenito govoreći, nemoguće je naći egzaktno rješenje od (1) zato što je V beskonačno dimenzionalni prostor. Prirodno je probati konstruirati aproksimaciju rješenja u konačnodimenzionalnom prostoru VN⊂V. Promotrimo projekciju problema (1) na VN,
(2)
uN∈VN,a(uN,v)=l(v)∀v∈VN.
Uz pretpostavke da je bilinearna forma a ograničena, V - eliptična i l ograničeni linearni funkcional, opet primjenom Lax-Milgramove leme slijedi da (2) ima jedinstveno rješenje uN.
Neka je {ϕi}Ni=1 baza konačnodimenzionalnog prostora VN, tada možemo zapisati
uN=N∑j=1ξjϕj
za neke, trenutno nepoznate, skalare ξi, i=1,2,..,N.
Uzmimo da v∈VN budu baš ϕi te uvrstimo u (2). Dobivamo
(3)
N∑j=1a(ϕj,ϕi)ξj=l(ϕi)i=1,...,N.
Očito, prethodnu tvdnju možemo zapisati kao linearni sustav
Kξ=b
gdje je vektor nepoznanica ξ=(ξj)∈RN, K=(a(ϕj,ϕi))∈RN×N matrica sustava te b=(l(ξi))∈RN desna strana.
Općenito je aproksimacija uN različita od rješenja u, stoga je prirodno tražiti približno rješenje uN u potprostoru VN što veće dimenzije. Za niz potprostora VNi takvih da vrijedi VN1⊂VN2⊂...VN, računamo pripadna rješenja uNi, i=1,2,.... Ovaj postupak nazivamo Galerkinovom metodom. Prvi korak u dokazu konvergencije Galerkinove metode je važan i elegantan teorijski rezultat.
Teorem 1. (Céina lema) Neka je V Hilbertov prostor,
VN⊂V,a(⋅,⋅) ograničena, V-eliptična bilinerna forma na V te
l ograničeni linearni funkcional. Neka je
u∈V rješenje od
(1) i
uN∈VN Galerkinova aproksimacija
(2). Tada postoji konstanta
C takva da
(4)
‖u−uN‖V≤Cinfv∈VN‖u−v‖V.
Proof. Prema pretpostavci
a(⋅,⋅) je V-eliptična, ograničena bilinearna forma pa za svaki
v∈VN imamo,
c‖u−uN‖2V≤a(u−uN,u−uN)&=a(u−uN,u−v) ≤M‖u−uN‖V‖u−v‖V.
Dijeljenjem s
c‖u−uN‖ slijedi tvrdnja,
‖u−uN‖2V≤C‖u−uN‖V‖u−v‖V
gdje je
C=M/c.
◼
U slučaju kada je a(⋅,⋅) simetrična bilinearna forma ona definira skalarni produkt na V i njime induciranu normu ‖v‖a=√a(v,v). Ako sada oduzimemo (2) od (1) zbog linearnosti slijedi
a(u−uN,v)=0∀v∈VN.
Vidimo da je s obzirom na novi skalarni produkt pogreška u−uN ortogonalna na potprostor VN. Drugim riječima, uN je ortogonalna projekcija egzaktnog rješenja u na potprostor VN.
Korolar 2. Uz pretpostavke prethodnog teorema pretpostavimo još da je dan niz potprostora VN1⊂VN2⊂... takvih da je ¯⋃iVNi=V. Tada Galerkinova metoda konvergira,
‖u−uNi‖⟶0 kad i⟶∞.
Proof. Zbog pretpostavke gustoće postoji niz
vi∈VNi,
i≥1, takav da
‖u−vi‖V⟶0 kad i⟶∞.
Primjenom Céine leme slijedi dokaz tvrdnje,
‖u−uNi‖V≤C‖u−vi‖V.
◼
Promotrimo primjenu Galerkinove metode na jednostavnom primjeru.
Primjer 3. Zadan je rubni problem
(5)
{−u″+u=f na ⟨0,1⟩u(0)=u(1)=0.
Množenjem s test funkcijom
v∈V=H10(⟨0,1⟩), integriranjem po cijeloj domeni te primjenom parcijalne integracije slijedi slaba formulacija
u∈V,∫10(u′v′+uv)dx=∫10fvdx,∀v∈V.
Ako definiramo
a(u,v)=∫10(u′v′+uv)dx te
l(v)=∫10fvdx iz Lax-Milgramove leme slijedi jedinstvenost rješenja ovako zapisane zadaće.
Moramo odabrati konačnodimenzionalni potprostor od
V u kojem želimo tražiti aproksimaciju rješenja. S obzirom na to da je rješenje u rubovima nula jedan jednostavan potprostor je
VN=span{xi(1−x),i=1,2,...,N}.
Onda je
uN=N∑j=1ξjxj(1−x).
Nepoznate koeficijente
{ξj}Nj=1 odredit ćemo iz Galerkinovih jednadžbi
∫10(u′Nv′+uNv)dx=∫10fvdx∀v∈VN,
uzimanjem funkcija
v=xi(1−x),i=1,2,...,N za test funkcije. Dolazimo do sustava linearnih jednadžbi
Kξ=b,
gdje je
ξ=(ξ1,...,ξN)τ vektor nepoznanica,
b∈RN vektor desne strane čija je i-ta komponenta oblika
∫10f(x)xi(1−x)dx te
K matrica sustava čiji
(i,j) element ima oblik
∫10[(xj(1−x))′(xi(1−x))′+xj(1−x)xi(1−x)]dx=iji+j−1−i(j+1)j(i+1)i+j+(i+1)(j+1)i+j+1 +1i+j+1−2i+j+2+1i+j+3.
Valja odmah primijetiti da je matrica koeficijenata
K popunjena elementima različitim od nule. No to nije sve, matrica je i loše uvjetovana što upućuje na ozbiljne opasnosti prilikom numeričkog rješavanja dobivenog sustava. U sljedećoj tablici je prikazana uvjetovanost matrice sustava za neke dimenzije potprostora.
NCond(K) 31.90⋅102 57.88⋅104 74.43⋅107 107.87⋅1011
Kao posljednji argument koji ide u prilog numeričkoj nestabilnosti implementacije Galerkinove metode pogledajmo sljedeće slike.
Iako je s teorijske strane ovaj pristup jednostavan i elegantan, neke detalje ćemo ipak morati prilagoditi kako bismo osigurali spomenuta dobra svojstva i praktičnoj izvedbi.
3Metoda konačnih elemenata
U prethodnom primjeru prilikom numeričke izvedbe Galerkinove metode vidjeli smo da se rješavanje linearnog rubnog problema svodi na rješavanje sustava linearnih jednadžbi. No, matrica sustava je bila gusto popunjena i loše uvjetovana. Htjeli bismo prilagoditi Galerkinovu metodu tako da u konačnici dobijemo sustav koji je dobro uvjetovan i još po mogućnosti rijetko popunjen. Ipak, za računanje svakog elementa matrice potrebno je riješiti ponekad netrivijalan integral - što je vremenski skupo ukoliko je matrica gusto popunjena. Kada radimo sa sustavima čije su matrice rijetko popunjene otvara se još jedan bonus, mogućnost uporabe iterativnih metoda. Jedan način na koji možemo riješiti prethodna dva problema jest pažljivim odabirom baze konačnodimenzionalnog prostora VN. Zathjevat ćemo da je broj baznih funkcija čiji se nosači sijeku s nosačem proizvoljne bazne funkcije što manji mogući. Odlučit ćemo se za prostor VN koji se sastoji od funkcija koje su po dijelovima polinomi povezani s diskretizacijom domene Ω. Jednostavno govoreći, Galerkinova metoda uz prethodne pretpostavke na bazne funkcije postaje metoda konačnih elemenata.
Konvergencija metode konačnih elemenata može se postići povećanjem stupnja polinoma u baznim funkcijama, profinjavanjem diskretizacije domene ili čineći obje istovremeno. Ilustrirajmo sada na primjeru navedene ideje.
Primjer 4. Promatramo
(6)
{−u″+u=f na ⟨0,1⟩u(0)=0,u′(1)=b
gdje je
f∈L(⟨0,1⟩) te
b∈R. Kao prije množenje s test funkcijom
v∈V={v∈H1(⟨0,1⟩):v(0)=0}, integriranjem po cijeloj domeni te primjenom parcijalne integracije daje slabu formulaciju
u∈V,∫10(u′v′+uv)dx=∫10fvdx+bv(1),∀v∈V.
Opet, primjenom Lax-Milgramove leme slijedi da slaba formulacija ima jedinstveno rješenje.
Za
N∈N načinimo diskretizaciju domene
I=[0,1] tako da je
0=x0<x1<...<xN=1. Točke
xi nazivamo čvorovi, a podintervale
Ii=[xi−1,xi] elementi. Označimo s
hi=xi−xi−1 te s
h=maxi=1,...,Nhi. Rješenje ćemo tražiti u prostoru
Vh={vh∈V:vh|Ii∈P1(Ii),i=1,...,N}.
Zato što su po dijelovima glatke funkcije u
H1(I) ako i samo ako su u
C(¯I), ekvivaletno možemo definirati
Vh={vh∈C(¯I):vh|Ii∈P1(Ii),i=1,...,N,v(0)=0}.
Za bazne funkcije uvodimo tzv.
hat funkcije
ϕi(x)={(x−xi−1)/hi,xi−1≤x≤xi,(xi+1−x)/hi+1,xi≤x≤xi+1,0,inače,
i posebno za desni rub kada je
i=N,
ϕi(x)={(x−xN−1)/hN,xN−1≤x≤xN,0,inače,
Prethodne funkcije su neprekidne, po dijelovima glatke i očito linearno nezavisne. Lako se vidi da je prva slaba derivacija tako definiranih funkcija
ϕi po dijelovima konstantna funkcija.
Neka je zadan prostor konačnih elemenata
Vh=span{ϕi:i=1,...,N}
uz problem
(7)
uh∈Vh∫10(u′hv′h+uhvh)dx=∫10fvhdx+bvh(1)∀v∈Vh,
koji prema Lax-Milgramovoj lemi ima jedinstveno rješenje. Kao i u prethodnom primjeru, ako zapišemo aproksimaciju rješenja kao linearnu kombinaciju elemenata baze,
uh=N∑j=1ujϕj
vidimo da se
(7) može zapisati kao
N∑j=1uj∫10(ϕ′iϕ′j+ϕiϕj)dx=∫10fϕidx+bϕi(1),i=1,...,N.
Lako je provjeriti istinitost sljedećih formula, a njihovo uvažavanje će biti ključno za sastavljanje matrice sustava.
∫10ϕ′iϕ′i−1dx=−1h,i=2,...,N, ∫10(ϕ′i)2dx=2h,i=2,...,N−1, ∫10ϕiϕi−1dx=−h6,i=2,...,N, ∫10(ϕi)2dx=2h3,i=1,...,N−1, ∫10(ϕ′N)2dx=−1h, ∫10(ϕN)2dx=−h3.
Sada možemo problem
(7) prikazati kao sustav linearnih jednadžbi
Ku=b.
K=[2h3+2hh6−1h h6−1h2h3+2hh6−1h ⋱⋱⋱&h6−1h2h3+2hh6−1h&h6−1hh3+h]
je matrica sustava,
b=(∫10fϕ1dx,∫10fϕ2dx,...,∫10fϕN−1dx,∫10fϕNdx+b)τ
vektor desne strane te
u=(u1,...,uN)τ
vektor nepoznanica. Zahtijevali smo da bazne funkcije imaju što manji mogući nosač, posljedica je rijetko popunjena matrica sustava
K matrica. Dobra uvjetovanost matrice
K pokazana u sljedećoj tablici.
NCond(K) 322.3962 522.3962 722.3962 1043.1613
Na kraju primjera pogledajmo rezultate programske implementacije metode konačnih elemenata.
4Još jedan primjer
U nastavku promotrimo jednadžbu koja opisuje otklon žice klavira pod utjecajem sile f. Žica klavira ima dva dijela; žičanu jezgru te žicu namotanu oko nje. Uzevši to u obzir, jasno je da se takav objekt ne ponaša isključivo kao tanka žica. Žica klavira vibrira dijelom zbog napetosti, a dijelom zbog same čvrstoće žice. Iz tog razloga modelu dodajemo član koji opisuje ponašanje tankog štapa.
(8)
{u(4)−u″=f na ⟨0,1⟩u(0)=u′(0)=u(1)=u′(1)=0.
Slaba formulacija problema je
u∈V,∫10(u″v″+u′v′)dx=∫10fvdx∀v∈V,
gdje je V=H20(⟨0,1⟩). Ako želimo odabrati Vh, takav da je Vh⊂V, onda svaka funkcija u Vh mora bit barem klase C1. Pretpostavimo da se Vh sastoji od po dijelovima polinoma stupnja manjeg ili jednakog p. Uvjet da su funkcije u Vh klase C1 nameće 2(N−1) uvjeta, a rubni uvjeti još 4 uvjeta. Sve skupa imamo
dim(Vh)=(p+1)N−2(N−1)−4=(p−1)N−2
stupnja slobode da odaberemo bazne funkcije sa što manjim nosačem. Jasno je da je najmanji dozvoljeni p=2. Međutim odlučit ćemo se za p=3 da bismo povećali broj stupnjeva slobode za odabir baznih funkcija. Za p=3 prostor konačnih elemenata je
Vh={vh∈C1(¯I):vIi∈P3(Ii),I=1,...,N,vh(x)=v′h(x)=0 za x=0,1}.
Možemo konstruirati bazne funkcije s malim nosačima koristeći uvjete interpolacije
ϕi(xj)=δij,ϕ′i(xj)=0,ψi(xj)=0,ψ′i(xj)=δij.
Kako bismo izbjegli tehničke komplikacije, poželjno je raditi na referentnom elementu. Ideja je sav posao obaviti na jednom elementu, tzv. referentnom elementu, a onda postignuto preslikati na ostale elemente. Neka je I0=⟨0,1⟩, preslikavanje
Fi:I0→Ii,Fi(ξ)=xi−1+hiξ
je bijekcija. Na referentnom elementu I0 konstruiramo polinome trećeg stupnja koji zadovoljavaju interpolacijske uvjete
Φ0(0)=1,Φ0(1)=0,Φ′0(0)=0,Φ′0(1)=0, Φ1(0)=0,Φ1(1)=1,Φ′1(0)=0,Φ′1(1)=0, Ψ0(0)=0,Ψ0(1)=0,Ψ′0(0)=1,Ψ′0(1)=0, Ψ1(0)=0,Ψ1(1)=0,Ψ′1(0)=0,Ψ′1(1)=1.
Jednostavnim računom određujemo da su tražene funkcije
Φ0(ξ)=(1+2ξ)(1−ξ)2,Φ1(ξ)=(3−2ξ)ξ2,Ψ0(ξ)=ξ(1−ξ)2,Ψ1(ξ)=−(1−ξ)ξ2.
Sad možemo odrediti bazne funkcije
ϕi={Φ1(F−1i(x)),x∈Ii,Φ0(F−1i+1(x)),x∈Ii+1,0,inače,
i
ψi={hiΨ1(F−1i(x)),x∈Ii,hi+1Ψ0(F−1i+1(x)),x∈Ii+1,0,inače,
Kao i u prethodnim primjerima, želimo formulirati sustav linearnih jednadžbi. Koeficijente matrice sustava računat ćemo preko referentnog elementa, npr.
ki−1,i=∫10(ϕi−1)″(ϕi)″+(ϕi−1)′(ϕi)′dx=∫Ii(ϕi−1)″(ϕi)″+(ϕi−1)′(ϕi)′dx
koristeći definiciju baznih funkcija i funkcije Fi možemo izračunati
ki−1,i=1h3i∫I06(2ξ−1)6(1−2ξ)dξ+1hi∫I06ξ(ξ−1)6ξ(1−ξ)dξ=−12h3i−65hi.
Ostale elemente matrice možemo izračunati analogno, a tako dobivena matrica će biti petdijagonalna. Komentirajmo za kraj da je za višedimenzionalne probleme tehnika referentnog elementa neophodna, kako za teorijsku analizu greške tako i za praktičnu implementaciju. Valja primijetiti da smo u prethodnom jednodimenzionalnom primjeru zahtijevali da funkcije iz Vh budu polinomi trećeg stupnja kako bismo postigli da funkcije iz Vh⊂V budu klase C1. U višim dimenzijama je potreban još veći stupanj polinoma kako bismo to postigli. Jedan način kako je moguće riješiti taj problem jest korištenjem nekonformnih elemenata ([5]).
Za sam kraj, ostavljamo čitatelju jedan programerski podhvat.
Zadatak. Napravite programsku izvedbu metode konačnih elemenata za sljedeći problem
(9)
{u(4)−u″=−x3 na ⟨0,1⟩u(0)=u′(0)=u(1)=u′(1)=0.
Egzaktno rješenje ovog problema je
u(x)=120(e−3)(e−1)⋅e−x(ex+2(x5+20x3−44x+44)−2ex+1(2x5+40x3−65x+44) +ex(3x5+60x3−86x−86)+86e2x−21e2x+1−44e2+109e).
Zahvaljujem se prof.dr.sc. Josipu Tambači na detaljnom čitanju ovog članka i korisnim savjetima.
5Literatura
[1] Atkinson, Han. Theoretical Numerical Analysis: a functional framework. Vol 19. Springer, 2009.
[2] Dhatt, Gouri i Touzot, Gilbert. Finite Element Method. John Willey and Sons, 2012.
[3] Brenner, Susanne i Carstensen, Carsten. Encyclopedia of Computational Mechanics. Chapter 4, Finite Element Methods. John Wiley and Sons, 2004.
[4] Jurak, Mladen. Praktikum primijenjene matematike II. Skripta, PMF Matematički odsjek, 2008.
[5] Ciarlet, Philippe G. The finite element method for elliptic problems. Elsevier, 1978.