• Nie Znaleziono Wyników

Metoda elementów skończonych (FEM)

N/A
N/A
Protected

Academic year: 2021

Share "Metoda elementów skończonych (FEM)"

Copied!
17
0
0

Pełen tekst

(1)

Metoda elementów skończonych (FEM)

Marcin Orchel

Spis treści

1 Wstęp 1

1.1 Rachunek wariacyjny . . . 1

1.2 Sprowadzanie problemu brzegowego do zagadnienia wariacyjnego . . . 5

1.2.1 Warunki brzegowe dla równania Poissona . . . 7

1.2.2 Jednowymiarowy problem brzegowy . . . 7

1.3 Metoda Galerkina . . . 10

1.4 Metoda elementów skończonych . . . 11

2 Zadania 13 2.1 Przydatne polecenia . . . 13

2.2 Zadania na 3.0 . . . 13

2.3 Zadania na 4.0 . . . 14

2.4 Zadania na 5.0 . . . 14

1 Wstęp

1.1 Rachunek wariacyjny

W rachunku wariacyjnym szukamy takiej funkcji y (x), dla której wyrażenie całkowe I [y] =

Z b a

Fx, y (x) , y0(x) , . . . , y(n)(x)dx (1) osiąga ekstremum, gdzie y (x) należy do ściśle określonej klasy funkcji, I to funkcjonał mapujący funkcję do wartości skalarnej. Na funkcję y (x) i jej pochodne nakłada się warunki brzegowe i warunki dodatkowe (poboczne).

Przykłady zagadnień wariacyjnych:

Przykład 1 (Zagadnienie izoperymetryczne). Znaleźć w kartezjańskim układzie współ- rzędnych taką krzywą y = y (x) łączącą punkty A (a, 0) i B (b, 0), że jej długość wynosi l i razem z odcinkiem AB odcina powierzchnię o możliwie największym polu. W rachunku wariacyjnym: znaleźć dwukrotnie różniczkowalną funkcję y (x), taką, że:

maxy I [y] = Z b

a

y (x) dx (2)

(2)

z warunkiem pobocznym:

G [y] = Z b

a

q

1 + y02(x)dx = l (3)

i z warunkami brzegowymi:

y (a) = y (b) = 0 (4)

Wyprowadzenie wzoru na długość łuku krzywej y(x):

ds = q

dx2+ dy2 (5)

l = Z b

a

ds = Z b

a

s

dx dt

2

+

dy dt

2

dt (6)

Jeśli t = x:

l = Z b

a

s 1 +

dy dx

2

dx (7)

Rozwiązaniem tego zagadnienia jest część okręgu.

Przykład 2 (Zagadnienie brachistochrony). Punkt P0(x0, y0), leżący w umieszczonej pionowo płaszczyźnie Oxy, należy tak połączyć krzywą y = y (x) z początkiem ukła- du współrzędnych, aby punkt materialny poruszający się bez tarcia wzdłuż tej krzywej, wyłącznie pod wpływem siły ciężkości, znalazł się w początku układu w możliwie najkrót- szym czasie. W rachunku wariacyjnym: szukamy funkcji y = y (x), ciągłej wraz ze swoją pierwszą pochodną, dla której:

T [y] = Z te

0

dt = Z x0

0

p1 + y02

p2g (y0− y)dx = min (8) z warunkami brzegowymi:

y (0) = 0 (9)

y (x0) = y0 (10)

Wyprowadzenie z mv2/2 = mg(y0− y), v =p2g(y0− y), a także v = ds/dt, dt = ds/v, ds =p1 + y02dx. Rozwiązaniem jest brachistochrona, czyli część cykloidy.

Proste zagadnienie wariacyjne: wyznaczyć wartości ekstremalne funkcjonału postaci:

I [y] = Z b

a

F x, y (x) , y0(x)dx (11) gdzie y (x) jest zbiorem funkcji ciągłych wraz ze swoimi pochodnymi do drugiego rzędu włącznie, spełniających warunki brzegowe:

y (a) = A (12)

y (b) = B (13)

(3)

Funkcjonał I [y] osiąga np. dla funkcji y0(x) maksimum lokalne, wtedy dla pewnego otoczenia tej funkcji zawartego w dziedzinie funkcyjnej zachodzi nierówność:

I [y0] ≥ I [y] (14)

Krzywą y = y0(x) nazywamy ekstremalą funkcjonału lub funkcją ekstremalną.

Warunek konieczny rozwiązania prostego zagadnienia wariacyjnego. Dla rozwiązania y0(x) spełniającego (14) konstruujemy tzw. funkcję porównawczą:

y (x) = y0(x) + εη (x) (15)

gdzie η (x) ma ciągłe pochodne aż do rzędu drugiego włącznie oraz spełnia specjalne warunki brzegowe

η (a) = η (b) = 0 (16)

Podstawiając (15) do (11) otrzymujemy:

I (ε) = Z b

a

F x, y0+ εη, y00 + εη0dx (17) Zadanie aby funkcjonał I [y] osiągał w punkcie y0(x) ekstremum, przechodzi w zadanie, aby funkcja I (ε) miała ekstremum w punkcie ε = 0. Warunek konieczny na ekstremum brzmi:

dI

= 0 (18)

dla

ε = 0 (19)

Wzór Taylora dla funkcji wielu zmiennych. Istnieje takie 0 < φ < 1, że:

(∆f )(x

0,y0) = (df )(x

0,y0)+1 2

 d2f

(x0,y0)+ . . . + 1 (n − 1)!



dn−1f

(x0,y0) (20) + 1

(n)!(dnf )(x0+φdx,y0+φdy) (21)

gdzie

(∆)(x

0,y0)= f (x0+ dx, y0+ dy) − f (x0, y0) (22) Różniczka zupełna rzędu n dla 3 zmiennych ma postać:

dnu =



∂xdx +

∂ydy +

∂zdz

n

u (23)

Dla n = 1

du = ∂u

∂xdx + ∂u

∂ydy +∂u

∂zdz (24)

Dla n = 2 otrzymujemy d (du):

d2u =∂2u

∂x2dx2+ ∂u2

∂xydxdy + ∂u2

∂xzdxdz (25)

(4)

+2u

∂y2dy2+ ∂u2

∂xydxdy + ∂u2

∂yzdydz (26)

+2u

∂z2dz2+ ∂u2

∂xzdxdz +∂u2

∂yzdydz = (27)

2u

∂x2dx2+ 2u

∂y2dy2+ 2u

∂z2dz2+ 2∂u2

∂xydxdy + 2∂u2

∂xzdxdz + 2∂u2

∂yzdydz (28) Dla funkcji trzech zmiennych wzór można zapisać w postaci:

f (x0+ h, y0+ k, z0+ l) = f (x0, y0, z0)+fx0 (x0, y0, z0) h+fy0 (x0, y0, z0) k+fz0(x0, y0, z0) l (29) +1

2

fxx00 h2+ fyy00 k2+ fzz00l2+ 2fxy00hk + 2fxz00hl + 2fyz00kl

(x0+φh,y0+φk,z0+φl) (30) Zakładając różniczkowalność funkcji F po rozwinięciu jej w szereg Taylora dla n = 1 w punkcie (x, y0, y00) otrzymujemy:

I (ε) = Z b

a

F x, y0, y00+∂F

∂y x, y0, y00εη +∂F

∂y0 x, y0, y00εη0+ Oε2dx (31) Różniczkując powyższe po  i przyjmując po różniczkowaniu, że  = 0 warunek konieczny przyjmuje postać:

Z b a

η∂F

∂ydx + Z b

a

η0∂F

∂y0dx = 0 (32)

Po całkowaniu przez części Z b

a

η∂F

∂ydx +

 η∂F

∂y0

b a

Z b

a

η d dx

∂F

∂y0



dx = 0 (33)

i zauważeniu, że η jest zerem na brzegu otrzymujemy Z b

a

η

∂F

∂yd dx

∂F

∂y0



dx = 0 (34)

Równanie powyższe powinno być spełnione dla dowolnej funkcji η, dlatego musi zacho- dzić:

∂F

∂yd dx

∂F

∂y0



= 0 (35)

Równanie to jest warunkiem koniecznym na rozwiązanie prostego zagadnienia wariacyj- nego i nazywane jest równaniem Eulera.

Przykład 3. Wyznaczyć najkrótszą linię, która łączy dwa punkty P1(a, A) i P2(b, B) leżące w płaszczyźnie Oxy:

miny I [y] = Z b

a

q

1 + y02dx (36)

F x, y, y0= F y0= q

1 + y02 (37)

(5)

∂F

∂y0 = y0

p1 + y02 (38)

d dx

y0 p1 + y02

!

=

y00p1 + y02− √y02y00

1+y02

1 + y02 = y00

p1 + y02 (39)

Warunek Eulera jest następujący:

y00

p1 + y02 = 0 (40)

Stad

y00= 0 (41)

A więc najkrótszą linią łączącą dwa punkty jest prosta.

Zadanie. Dla funkcjonału

I [y] = Z b

a

(x − y)2dx (42)

znaleźć równanie Eulera, rozwiązać je, oraz obliczyć wartość funkcjonału dla otrzymanej ekstremali.

1.2 Sprowadzanie problemu brzegowego do zagadnienia wariacyjnego Przykład dwuwymiarowy: Dane jest zagadnienie brzegowe z operatorem Laplace’a (la- plasjanem) ∆u:

∆u = 2u

∂x2 + 2u

∂y2 = f (x, y) (43)

we wnętrzu obszaru G, gdzie

u = 0 (44)

na brzegu obszaru G. Powyższe równanie różniczkowe znane jest jako równanie Poissona.

Będziemy wykorzystywać wystarczająco gładką funkcję v (x, y), zwaną funkcją testową, która znika na brzegu obszaru G (v = 0).

Stosujemy twierdzenie Greena opisujące zależność między całką po powierzchni ogra- niczonej i całką po krzywej zamkniętej postaci:

Z Z

(B)

∂Q (x, y)

∂x∂P (x, y)

∂y



dxdy = I

(K)

[P (x, y) dx + Q (x, y) dy] (45)

gdzie B jest powierzchnią o brzegu K, P i Q są funkcjami ciągłymi i mają ciągłe pierwsze pochodne cząstkowe. Przyjmując

P (x, y) = −v (x, y) uy (46)

Q (x, y) = v (x, y) ux (47)

(6)

otrzymujemy:

Z Z

(G)

∂vux

∂x + ∂vuy

∂y



dxdy = I

(K)

[−vuydx + vuxdy] (48)

Po przekształceniu:

Z Z

(G)

"

∂u

∂x

∂v

∂x+ v∂2u

∂x2 +∂u

∂y

∂v

∂y + v∂2u

∂y2

#

dxdy = I

(K)

[−vuydx + vuxdy] (49)

Z Z

(G)

∂u

∂x

∂v

∂x +∂u

∂y

∂v

∂y



dxdy + Z Z

(G)

"

v∂2u

∂x2 + v∂2u

∂y2

#

dxdy = I

(K)

[−vuydx + vuxdy] (50)

Następnie po pomnożeniu (43) przez funkcję v otrzymujemy

2u

∂x2 +2u

∂y2

!

v = f v (51)

i po podstawieniu otrzymujemy:

Z Z

(G)

∂u

∂x

∂v

∂x+∂u

∂y

∂v

∂y



dxdy + Z Z

(G)

f vdxdy = I

(K)

[−vuydx + vuxdy] (52)

Prawa strona jest równa zeru, ponieważ v = 0. A więc mamy znaleźć takie u, że dla każdego v zachodzi:

Z Z

(G)

∂u

∂x

∂v

∂x+∂u

∂y

∂v

∂y



dxdy = Z Z

(G)

f vdxdy (53)

Wprowadzając oznaczenia a na funkcjonał biliniowy, a (u, v) = −

Z Z

(G)

∂u

∂x

∂v

∂x+ ∂u

∂y

∂v

∂y



dxdy (54)

oraz b na funkcjonał liniowy

b (v) = Z Z

(G)

f vdxdy (55)

otrzymujemy

a (u, v) = b (v) (56)

Postać ta jest nazywana zagadnieniem wariacyjnym dla równania Poissona.

(7)

1.2.1 Warunki brzegowe dla równania Poissona

• warunki Dirichleta: specyfikacja wartości funkcji na brzegu danego obszaru

• warunki Neumanna: specyfikacja wartości pochodnej normalnej ∂u∂n na brzegu da- nego obszaru, pochodna normalna jest zdefiniowana jako

∂y

∂n(x) = ∇y (x) · n (x) (57)

gdzie ∇f to operator gradientu, przykładowo zdefiniowany jako

∇f = ∂f

∂x~i +∂f

∂y~j +∂f

∂z~k (58)

gdzie ~i, ~j, ~k to wektory jednostkowe.

• warunki Cauchy’ego – specyfikacja zarówno wartości funkcji jak i pochodnej nor- malnej na brzegu obszaru

• warunki Robina: specyfikacja wartości wyrażeń postaci:

αU + β∂u

∂n (59)

gdzie α, β = const, oraz

α2+ β2 6= 0 (60)

1.2.2 Jednowymiarowy problem brzegowy Dane jest równanie różniczkowe postaci:

d2u

dx2 = f (x) (61)

dla

u (a) = u (b) = 0 (62)

G = (a, b) (63)

Sprowadzamy powyższe równanie do zagadnienia wariacyjnego podobnie jak dla przy- padku dwuwymiarowego, z tą różnicą, że stosujemy wzór na całkowanie przez części zamiast wzoru całkowego Gaussa. Najpierw mnożymy obie strony przez funkcję v(x) i całkujemy otrzymując

Z

G

d2u dx2vdx =

Z

G

f vdx (64)

Z

G

d dx

du dx

 vdx =

Z

G

f vdx (65)

(8)

Wzór na całkowanie przez części wygląda następująco:

b

Z

a

u0vdx = uv|ba

b

Z

a

uv0dx (66)

Stosując wzór na całkowanie przez części do (65) otrzymujemy:

du dxv

b a

Z

G

du dx

dv dxdx =

Z

G

f vdx (67)

Ponieważ v (a) = 0 oraz v (b) = 0, to:

Z

G

du dx

dv dxdx =

Z

G

f vdx (68)

inaczej zapisane

Z

G

u0v0dx = Z

G

f vdx (69)

Podobnie jak dla dwóch wymiarów, możemy powyższe zapisać w postaci

a (u, v) = b (v) (70)

gdzie

a (u, v) = − Z

G

u0v0dx (71)

b (v) = Z

G

f vdx (72)

Zagadnienie wariacyjne: znajdź u dla którego powyższe równanie jest spełnione dla każ- dego v. To równanie jest nazywane również sformułowaniem słabym. Możemy to sformu- łowanie słabe wyprowadzić również dla innego równania z dodatkowymi składnikami z pochodnymi pierwszego rzędu i z samą funkcją u. Wtedy dokonujemy całkowania przez części tylko do pierwszego składnika z drugimi pochodnymi. Równanie to zachodzi dla odpowiedniej klasy funkcji u i testowych.

Jaki jest związek tego równania z zagadnieniem wariacyjnym? Rozważmy zagadnienie wariacyjne

I (y) = min

y

1 2

Z b a

hy02(x) + 2f (x) y (x)idx (73) Zapiszmy warunek konieczny w formie (32) oznaczając η jako v i otrzymujemy

Z b

a

v∂F

∂ydx + Z b

a

v0∂F

∂y0dx = 0 (74)

1 2

Z b a

2f vdx +1 2

Z b a

2v0y0dx = 0 (75)

Z b a

f vdx + Z b

a

v0y0dx = 0 (76)

(9)

Przykład 4. Wyprowadzić postać słabą (wariacyjną) dla problemu brzegowego

− u00+ u0+ 2u = 3x2− x (77)

dla x ∈ (−1, 1) oraz

u (−1) = 1 (78)

u (1) = 0 (79)

Najpierw należy sprowadzić zagadnienie do warunków brzegowych zerowych. W tym celu u zapisujemy jako sumę u = w + ˜u, gdzie w musi spełniać powyższe warunki brzegowe, zaś ˜u warunki zerowe.

− ˜u00+ ˜u0+ 2˜u = 3x2− x + w00− w0− 2w (80) dla x ∈ (−1, 1) oraz

u (−1) = 0˜ (81)

u (1) = 0˜ (82)

A następnie podobnie jak wcześniej, stosując całkowanie przez części również dla w00. Możemy łatwo wybrać funkcję w tak aby były spełnione warunki brzegowe. Przykładowo

w (x) = α +β − α

b − a (x − a) (83)

w (x) = 1 + −1/2 (x + 1) (84)

Przykład 5. Wyprowadź postać słabą następującego problemu brzegowego

− u00+ x2u0+ 4u = x2− 2x3 (85) dla x ∈ (0, 2) z warunkami

− u0(0) + 2u (0) = −1 (86)

u (2) = 1 (87)

Rozwiązaniem pierwszego warunku jest funkcja u postaci u (x) = Ce2x−1

2 (88)

A więc

u (0) = C −1

2 (89)

Na początku włączamy pierwszy warunek Robina. Postać tego warunku dla przedzia- łu jednowymiarowego jest tutajhttp: // en. wikipedia. org/ wiki/ Robin_ boundary_

condition, a sposób włączenia omówiony jest tutaj http: // math. stackexchange.

com/ questions/ 361423/ variational-formulation-of-robin-boundary-value-problem-

(10)

for-poisson-equation-in. Po pomnożeniu przez funkcję v(x) i scałkowaniu otrzymu- jemy

Z 2

0

u00vdx + Z 2

0

x2u0vdx + Z 2

0

4uvdx = Z 2

0

f vdx (90)

Następnie stosujemy wzór na całkowanie przez części dla pierwszego składnika i dla niego otrzymujemy

Z 2

0

u00vdx = −u0v20+ Z 2

0

u0v0dx (91)

= −u0(2) v (2) + u0(0) v (0) + Z 2

0

u0v0dx (92)

Możemy podstawić z pierwszego warunku u0(0) = 2u(0) + 1 i otrzymujemy

− u0(2) v (2) + 2u (0) v (0) + v (0) + Z 2

0

u0v0dx (93)

Następnie włączamy drugi warunek Dirichleta sprowadzając go do warunku brzegowe- go zerowego za pomocą podstawienia u = w + ˆu, gdzie ˆu(2) = 0, w(2) = 1 i otrzymujemy

2w (0) v (0) + 2ˆu (0) v (0) + v (0) + Z 2

0

w0v0dx + Z 2

0

uˆ0v0dx (94) A więc całe równanie

2w (0) v (0) + 2ˆu (0) v (0) + v (0) + Z 2

0

w0v0dx + Z 2

0

uˆ0v0dx (95)

+ Z 2

0

x2w0vdx + Z 2

0

x2uˆ0vdx + Z 2

0

4wvdx + Z 2

0

uvdx = Z 2

0

f vdx (96) które można przedstawić w postaci (56). Należy mieć na uwadze przestrzenie do których należą funkcje ˆu i v, ˆu, v, w ∈ H1(Ω) z dodatkowymi warunkami ˆu(2) = 0, w(2) = 1.

1.3 Metoda Galerkina

Możemy rozwiązać zagadnienie wariacyjne za pomocą metody Galerkina, a więc w jed- nym z wariantów przybliżając funkcję u wyrażeniem:

u = ˜ˆ u +

n

X

i=1

αiφi (97)

Metoda jest przedstawiona dla przypadku jednowymiarowego. Funkcja ˜u odpowiada za spełnienie niezerowego warunku brzegowego Dirichleta. Funkcje φi powinny przyjmować wartość zero na brzegu obszaru na którym występują warunki Dirichleta. Funkcje φi nazywane są funkcjami bazowymi. Ponadto żądamy spełnienia równania wariacyjnego dla n funkcji v równych:

vi= φi (98)

(11)

dla i = 1, 2, . . . , n W ten sposób otrzymujemy układ n równań liniowych o n niewiado- mych αi postaci:

Z

G

d u +˜ Pn

j=1

αjφj

!

dx

i

dxdx = Z

G

f φidx (99)

Po przekształceniu:

n

X

j=1

αj

Z

G

j dx

i dxdx −

Z

G

d˜u dx

i dxdx =

Z

G

f φidx (100)

Zauważmy, że zapis (64) jest tak naprawdę zapisem wymuszenia ortogonalności błę- du (defektu) dla równania (61), więc widzimy, że sformułowanie metody Galerkina z konspektu z metodami numerycznymi jest równoważne powyższemu.

Przykład 6.

d2u

dx2 = 1 (101)

w przedziale (0, 1)

u (0) = u (1) = 0 (102)

Możemy wybrać funkcję ˜u = 0, ponieważ dla niej będą spełnione warunki brzegowe.

Ustalmy n = 3, wybierzmy funkcje bazowe

φ1 = x (103)

φ2= x2 (104)

φ3= x3 (105)

Konstruujemy układ równań (100).

1.4 Metoda elementów skończonych

W metodzie elementów skończonych dzielimy obszar na podobszary i znajdujemy funkcję u dla każdego podobszaru.

Przykład 7.

d2u

dx2 = 1 (106)

w przedziale (0, 1)

u (0) = u (1) = 0 (107)

Do przybliżenia wybieramy takie funkcje φi, aby każda z nich przyjmowała wartość 1 w punkcie xi, a w pozostałych punktach podziału przyjmowała wartość 0, przykładowo dla x0 = 0, x1= 0, 5, x2 = 1:

φ1(x) =

( 1 − 2x; x ∈ (0, 0.5)

0; x ∈ (0.5, 1) (108)

(12)

φ2(x) =

( 2x; x ∈ (0, 0.5)

2 − 2x; x ∈ (0.5, 1) (109)

φ3(x) =

( 0; x ∈ (0, 0.5)

2x − 1; x ∈ (0.5, 1) (110)

u =ˆ

3

X

i=1

αiφi (111)

W każdym przedziale xk, xk+1 u będzie przybliżane linią prostą. W ogólności:

φk(x) =

x−xk−1

xk−xk−1; x ∈ (xk−1, xk)

xk+1−x

xk+1−xk; x ∈ (xk, xk+1) 0

(112)

np.: x0= 0, x1 = 0, 5, x2= 1,

φ0(x) =

( 1 − 2x x ∈ (0, 0.5)

0 (113)

φ1(x) =

( 2x; x ∈ (0, 0.5)

2 − 2x; x ∈ (0.5, 1) (114)

φ2(x) =

( 2x − 1; x ∈ (0.5, 1)

0 (115)

Przykład 8. Napisać układ Galerkina dla problemu brzegowego

− 2u00+ u = x + 2 (116)

dla x ∈ (0, 2) z warunkami

u (0) = 1 (117)

u (2) = 0 (118)

dla funkcji bazowych jednowymiarowej metody elementów skończonych v1, v2, v3 zwią- zanych z siatką punktów xk = k/2, k = 0, 1, 2, 3, 4, tzn.

vk(x) = 1 − |x − xk|

2 (119)

jeśli x ∈ [xk−1, xk+1], oraz

vk(x) = 0 (120)

w przeciwnym przypadku dla k = 1, 2, 3.

Należy najpierw naszkicować funkcje bazowe. Rozwiązanie będzie składało się z roz- wiązań dla podprzedziałów. Dla każdego podprzedziału musimy określić rozwiązanie postu- lowane które znajdujemy za pomocą odpowiedniego układu równań (100). Układ równań

(13)

musi być tak skonstruowany aby liczba równań była równa liczbie zmiennych i aby nie występowały równania nieokreślone postaci 0 = 0 lub sprzeczne. Dla pierwszego podprze- działu musi być spełniony warunek (117), więc dla tego podprzedziału rozwiązanie będzie miało postać

u = ˜u +

1

X

k=0

αkvk(x) (121)

Zauważmy, że dla tego podprzedziału nie możemy postulować rozwiązania z większą licz- bą funkcji bazowych, ponieważ otrzymujemy wtenczas jedno z równań z układu równań (100) postaci 0 = 0. Dlatego też rozpatrujemy tylko te funkcje bazowe, które są nieze- rowe w danym podprzedziale. W kolejnych podprzedziałach nie musimy dodawać funkcji u z wyjątkiem ostatniego podprzedziału dla którego musi być spełniony warunek (118).˜ Zauważmy, że ˜u zarówno dla pierwszego jak i ostatniego warunku wystarczy, że speł- nia tylko jeden odpowiedni warunek, więc postać tej funkcji może być odpowiednią stałą.

W jaki sposób wyznaczyć liczbę podprzedziałów? Na pewno będzie ona określona w ten sposób aby w każdym podprzedziale zestaw funkcji bazowych był ten sam, ponadto taki podprzedział może być dalej podzielony na kolejne podprzedziały ze względu na postać od- cinkową funkcji. Należy również sprawdzić, czy rzeczywiście dla pierwszego i ostatniego podprzedziału są spełnione warunki brzegowe, a więc przy obecności funkcji ˜u czy zerują się wartości funkcji bazowych vk(x).

2 Zadania

2.1 Zadania na 3.0

1. Wybrać dowolny problem brzegowy i rozwiązać.

2. Rozwiązać zagadnienie brzegowe metodą elementów skończonych:

d dx

 kdu

dx



= 0 (122)

z warunkiem Dirichleta w x = 0:

u (0) = uw (123)

i z warunkiem Cauchy’ego w x = 1 fdu

dx+ hu (1) = huz (124)

Wskazówki:

Wskazówki do R:

• pakiet fdaPDE Wskazówki do Matlaba:

(14)

• partial differential equation toolbox

• pdetool

• http://www.mathworks.com/help/pde/index.html Przykłady w R:

• przykład 1 triangulacja data(MeuseData)

mesh <- create.MESH.2D(nodes = MeuseData[,c(2,3)], order = 1) plot(mesh)

• przykład 2

data("mesh.2D.rectangular") plot(mesh.2D.rectangular)

FEMbasis = create.FEM.basis(mesh.2D.rectangular) coeff <-

sin(mesh.2D.rectangular$nodes[,1])*cos(mesh.2D.rectangular$nodes[,2]) FEM_object<- FEM(coeff, FEMbasis)

plot(FEM_object)

• przykład 3

data("mesh.2D.rectangular") plot(mesh.2D.rectangular)

FEMbasis = create.FEM.basis(mesh.2D.rectangular) coeff <-

sin(mesh.2D.rectangular$nodes[,1])*cos(mesh.2D.rectangular$nodes[,2]) FEM_object<- FEM(coeff, FEMbasis)

image(FEM_object)

• przykład 4

data(MeuseData) data(MeuseBorder)

mesh <- create.MESH.2D(nodes = MeuseData[,c(2,3)], segments = MeuseBorder, order = 1)

plot(mesh)

• przykład 5 Refine the triangulation data(MeuseData)

data(MeuseBorder)

mesh <- create.MESH.2D(nodes = MeuseData[,c(2,3)], segments = MeuseBorder, order = 1)

(15)

plot(mesh)

mesh_refine <- refine.MESH.2D(mesh, minimum_angle = 30, maximum_area = 10000)

plot(mesh_refine)

• przykład 6

library(fdaPDE) data(MeuseData) data(MeuseBorder) order=1

mesh <- create.MESH.2D(nodes = MeuseData[,c(2,3)], segments = MeuseBorder, order = order)

plot(mesh)

FEMbasis = create.FEM.basis(mesh) data = log(MeuseData[,"zinc"]) lambda = 10^3.5

ZincMeuse = smooth.FEM.basis(observations = data, FEMbasis = FEMbasis, lambda = lambda)

plot(ZincMeuse$fit.FEM)

desmat = matrix(1,nrow=nrow(MeuseData),ncol=2) desmat[,1] = sqrt(MeuseData[,"dist.log(m)"]) desmat[,2] = MeuseData[,"elev"]

smooth.FEM.PDE.basis

ZincMeuseCovar = smooth.FEM.basis(observations = data, covariates

= desmat,

FEMbasis = FEMbasis, lambda = lambda)

# Plot of the non parametric part (f) of the regression model y_i

= beta_1 x_i1 + beta_2 x_i2 + f plot(ZincMeuseCovar$fit.FEM)

# Print covariates’ regression coefficients print(ZincMeuseCovar$beta)

• przykład 7

# Load the mesh and plot it data(mesh.2D.simple)

plot(mesh.2D.simple)

# Create a vector of noisy samples of an underlying spatial field,

# located over the nodes of the mesh

observations = sin(pi*mesh.2D.simple$nodes[,1]) + rnorm(n = nrow(mesh.2D.simple$nodes), sd = 0.1)

# Create the FEM basis object

FEMbasis = create.FEM.basis(mesh.2D.simple)

# Set a vector of smoothing coefficients

(16)

lambda = c(10^-4, 1, 10^4)

# Set the anysotropic smoothing matrix K

PDE_parameters_anys = list(K = matrix(c(0.01,0,0,1), nrow = 2), b

= c(0,0), c = 0)

# Estimate one field for each smoothing parameter and plot these FEM_CPP_PDE = smooth.FEM.PDE.basis(observations = observations, FEMbasis = FEMbasis, lambda = lambda,

PDE_parameters = PDE_parameters_anys) plot(FEM_CPP_PDE$fit.FEM)

# Evaluate solution in three points

eval.FEM(FEM_CPP_PDE$fit.FEM, locations = rbind(c(0,0),c(0.5,0),c(-2,-2)))

• przykład 8

# Loading the mesh

data(mesh.2D.rectangular)

# Create the FEM basis object

FEMbasis = create.FEM.basis(mesh.2D.rectangular)

# Create a vector of noisy samples of an underlying spatial field,

# located over the nodes of the mesh

observations = sin(0.2*pi*mesh.2D.rectangular$nodes[,1]) + rnorm(n = nrow(mesh.2D.rectangular$nodes), sd = 0.1)

# Set the smoothing coefficient lambda = c(10^-2)

#Set the space vriant coefficients of the penalizying PDE K_func<-function(points)

{

mat<-c(0.01,0,0,1)

output = array(0, c(2, 2, nrow(points))) for (i in 1:nrow(points))

output[,,i] = 0.5*mat %*% t(points[i,1]^2) output

}

b_func<-function(points) {

output = array(0, c(2, nrow(points))) for (i in 1:nrow(points))

output[,i] = 0 output

}

c_func<-function(points) {

rep(c(0), nrow(points))

(17)

}

u_func<-function(points) {

rep(c(0), nrow(points)) }

# Assemble the parameters in one object

PDE_parameters = list(K = K_func, b = b_func, c = c_func, u = u_func)

# Estimate the underlying spatial field and plot these

FEM_CPP_PDE = smooth.FEM.PDE.sv.basis(observations = observations, FEMbasis = FEMbasis, lambda = lambda, PDE_parameters =

PDE_parameters)

plot(FEM_CPP_PDE$fit.FEM)

2.2 Zadania na 4.0

Rozwiązać metodą elementów skończonych równanie postaci:

− a (x) u0(x)0 = 0 (125)

dla x ∈ [0, 1] z warunkami:

u (0) = 0 (126)

u (1) = 5 (127)

oraz

a (x) = 1; x ∈ [0, 0.5] (128)

a (x) = 2; x ∈ [0.5, 1.0] (129)

2.3 Zadania na 5.0

Rozwiązać metodą elementów skończonych równanie postaci:

d2u (x)

dx2 = 0 (130)

dla x ∈ [0, 2] z warunkami:

u (2) = 1 (131)

du (0)

dx + u (0) = 20 (132)

Cytaty

Powiązane dokumenty

W tym jubileuszowym klimacie pragniemy zaprezentować temat prze- wodni niniejszego numeru „Sympozjum”, ukazujący specyfi kę sercań- skiego wychowana i edukacji. Pomoże nam

Zaprojektuj maskę wprowadzania dla pola Numer telefonu w ten sposób, aby można było wpisać numer telefonu stacjonarnego lub komórkowego.. Zaprojektuj maskę wprowadzania

Na płaszczyźnie dany jest trójk at o bokach a, b, c; można na nim zbudować jako na podsta-  wie nieskończenie wiele ostrosłupów o danej

utworzenie globalnej macierzy sztywności, oraz wektora obciążeń sztywności (lub jej odpowiedników dla innych zjawisk fizycznych).. Wyznaczenie lokalnych

W każdym z węzłów wyróżniamy stopnie swobody przemieszczeniowe (indeksy nieparzyste) oraz przemieszczenia kątowe (indeksy parzyste).. Macierz sztywności płaskiego elementu

W artykule przedstawiono zastosowanie klasycznej metody sztywnych elementów skończonych do modelowania powłok o skomplikowanych kształtach na przykładzie

B) […] Nieużytecznego sołtysa pan w dziedzictwie mając albo krnąbrnego może rozkazać mu sołectwo jego sprzedać, który gdyby nie mógł mieć nabywcy, wtedy ów dziedzic

Analogicznie korzystając z równoległości ścian ośmiościanu można prosto wykazać, że ten przekrój jest sześciokątem foremnym (jak na poniższym rysunku p..