Projekt Finit Element-lösare

Relevanta dokument
1. Låt u 0 och v 0 vara tvåvektorer i ett linjärt rum med skalärprodukt. Antag att följande relation gäller mellan längder av vektorer: u = 2 v = 2 3

FEM1: Randvärdesproblem och finita elementmetoden i en variabel.

Föreläsning 14: Exempel på randvärdesproblem. LU-faktorisering för att lösa linjära ekvationssystem.

TMA226 datorlaboration

1. Använd Laplacetransformen för att lösa differentialekvationen (5p) y (t) + 3y (t) + 2y(t) = 1, t > 0 y(0) = 1, y (0) = 1

ω L[cos(ωt)](s) = s 2 +ω 2 L[sin(ωt)](s) =

1. Använd Laplacetransformen för att lösa differentialekvationen (5p) y (t) y(t) = sin 2t, t > 0 y(0) = 1

Partiella differentialekvationer: Koppling Diskret - Kontinuum och Finita Elementmetoden

Rita även upp grafen till Fourierseriens summa på intervallet [ 2π, 3π], samt ange summans värde i punkterna π, 0, π, 2π. (5) S(t) = c n e int,

Egenvärdesproblem för matriser och differentialekvationer

SF1625 Envariabelanalys Lösningsförslag till tentamen DEL A

CHALMERS Finit Elementmetod M3 Institutionen för tillämpad mekanik. Teorifrågor

5B1134 Matematik och modeller Lösningsförslag till tentamen den 13 januari T = 1 ab sin γ. b sin β = , 956 0, 695 0, 891

7. Låt f(x) vara en 2π-periodisk, integrerbar funktion. Visa noggrant att om

Oändligtdimensionella vektorrum

9.3. Egenvärdesproblem

Tentamen, del 2 Lösningar DN1240 Numeriska metoder gk II F och CL

1. f är en två gånger deriverbar funktion på intervallet (a, b) och π 1 f är dess linjära interpolant. Visa att π 1 f f L (a,b) (b a) 2 f L (a,b).

Uppsala Universitet Matematiska Institutionen Bo Styf. Sammanfattning av föreläsningarna 11-14, 16/11-28/

Föreläsningen ger en introduktion till differentialekvationer och behandlar stoff från delkapitel 18.1, 18.3 och 7.9 i Adams. 18.

Laboration 2 Ordinära differentialekvationer

Mer om linjära ekvationssystem

TMV225 Inledande matematik M. Veckoprogram för läsvecka 4

Konvergens för iterativa metoder

Linjär algebra. 1 Inledning. 2 Matriser. Analys och Linjär Algebra, del B, K1/Kf1/Bt1. CTH/GU STUDIO 1 TMV036b /2013 Matematiska vetenskaper

u(x) + xv(x) = 0 2u(x) + 3xv(x) = sin(x) xxx egentliga uppgifter xxx 1. Sök alla lösningar till den homogena differentialekvationen

Interpolation Modellfunktioner som satisfierar givna punkter

Dagens program. Linjära ekvationssystem och matriser

SF1625 Envariabelanalys Lösningsförslag till tentamen DEL A

= 1, fallet x > 0 behandlas pga villkoret. x:x > 1

Kurs DN1215, Laboration 3 (Del 1): Randvärdesproblem för ordinära differentialekvationer

Mälardalens högskola Akademin för utbildning, kultur och kommunikation

linjära ekvationssystem.

x 2 = lim x 2 x 2 x 2 x 2 x x+2 (x + 3)(x + x + 2) = lim x 2 (x + 1)

FYSIKENS MATEMATISKA METODER

KTH Matematik Tentamensskrivning i Differentialekvationer och transformer III, SF1637.

Innehåll 1. Kapitel 6: Separation of Variables 1

Lösningar av uppgifter hörande till övning nr 5.

SKRIVNING I VEKTORGEOMETRI Delkurs

Laboration 1 i SF1544: Öva på Matlab och konstruera en optimal balk Avsikten med denna laboration är att:

Lösningsförslag till tentamen i SF1683, Differentialekvationer och Transformmetoder (del 2) 4 april < f,g >=

Flervariabelanalys och Matlab Kapitel 3

TATA42: Föreläsning 7 Differentialekvationer av första ordningen och integralekvationer

= = i K = 0, K =

LÖSNINGSFÖRSLAG TILL TENTAMEN 2 SF1664

TATA42: Föreläsning 9 Linjära differentialekvationer av ännu högre ordning

Akademin för utbildning, kultur och kommunikation MMA132 Numeriska Metoder Avdelningen för tillämpad matematik Datum: 2 juni 2014

6. Temperaturen u(x) i positionen x av en stav uppfyller värmeledningsekvationen. u (x) + u(x) = f(x), 0 x 2, u(0) = 0 u(2) = 1,

Fouriers metod, egenfunktionsutvecklingar.

Tentamen, del 2 DN1240 Numeriska metoder gk II för F

KTH Matematik Tentamensskrivning i Differentialekvationer I, SF1633.

Matematisk analys för ingenjörer Matlabövning 2 Numerisk ekvationslösning och integration

SF1626 Flervariabelanalys Lösningsförslag till tentamen DEL A

ÖVN 11 & 12 DEL A - DIFFTRANS - DEL2 - SF Nyckelord och innehåll. Inofficiella mål

Projekt om Finita Elementmetoden i kursen PDE F, TMA690, HT 2012

Lösningsförslag obs. preliminärt, reservation för fel

Studietips inför kommande tentamen TEN1 inom kursen TNIU23

SF1626 Flervariabelanalys Tentamen Måndagen den 16 mars 2015

Rita även grafen till Fourierserien på intervallet [ 2π, 4π]. (5) 1 + cos(2t),

LMA515 Matematik, del B Sammanställning av lärmål

= y(0) för vilka lim y(t) är ändligt.

Sammanfattning (Nummedelen)

MVE022 Urval av bevis (på svenska)

Kurvanpassning. Kurvanpassning jfr lab. Kurvanpassning jfr lab

TMV036/MVE350 Analys och Linjär Algebra K Kf Bt KI, del C

Lösningar till tentamen i Transformmetoder okt 2007

Teknisk Beräkningsvetenskap I Tema 3: Styvhetsmodellering av mjuk mark med icke-linjära ekvationer

Lösningsförslag till inlämningsuppgift 3 i Beräkningsprogrammering Problem 1) function condtest format compact format long

DATORLABORATION FÖR KURSEN ENVARIABELANALYS 2

Introduktion till Matlab

Objective:: Linjärt beroende och oberoende version 1.0

Föreläsning 5. Approximationsteori

NUMPROG, 2D1212, vt Föreläsning 1, Numme-delen. Linjära ekvationssystem Interpolation, Minstakvadratmetoden

Lösningsförslag, Tentamen, Differentialekvationer och transformer II, del 2, för CTFYS2 och CMEDT3, SF1629, den 9 juni 2011, kl.

För startpopulationer lika med de stationära lösningarna kommer populationerna att förbli konstant.

FMNF15 HT18: Beräkningsprogrammering Numerisk Analys, Matematikcentrum

R AKNE OVNING VECKA 1 David Heintz, 31 oktober 2002

Repetition, Matematik 2 för lärare. Ï x + 2y - 3z = 1 Ô Ì 3x - y + 2z = a Ô Á. . Beräkna ABT. Beräkna (AB) T

Matlab övningsuppgifter

f(x + h) f(x) h f(x) f(x h) h

Tentamensskrivning i Differentialekvationer I, SF1633(5B1206).

2x + y + 3z = 4 x + y = 1 x 2y z = 3

Mer om linjära ekvationssystem

(4 2) vilket ger t f. dy och X = 1 =

5B1134 Matematik och modeller Lösningsförslag till tentamen den 11 oktober 2004

MVE465. Innehållsförteckning

Laboration 6. Ordinära differentialekvationer och glesa system

Matriser och linjära ekvationssystem

ÖVN 2 - DIFFERENTIALEKVATIONER OCH TRANSFORMMETODER - SF1683. Inofficiella mål

SKRIVNING I VEKTORGEOMETRI

SF1625 Envariabelanalys Lösningsförslag till tentamen DEL A

Linjär Algebra M/TD Läsvecka 3

Partiella differentialekvationer och randvärdesproblem Separabla PDE Klassiska ekvationer och randvärdesproblem

Tentamen, SF1629, Differentialekvationer och Transformer II (del 2) 11 april 2017 kl. 8:00-13:00

Lösningsanvisningar till de icke obligatoriska workoutuppgifterna

Variabler. TANA81: Beräkningar med Matlab. Matriser. I Matlab skapas en variabel genom att man anger dess namn och ger den ett värde:

Tentamen del 1 SF1546, , , Numeriska metoder, grundkurs

5B1134 Matematik och modeller Lösningsförslag till tentamen den 29 augusti 2005

= e 2x. Integrering ger ye 2x = e 2x /2 + C, vilket kan skrivas y = 1/2 + Ce 2x. Här är C en godtycklig konstant.

Transkript:

Projekt Finit Element-lösare Emil Johansson, Simon Pedersen, Janni Sundén 29 september 2 Chalmers Tekniska Högskola Institutionen för Matematik TMA682 Tillämpad Matematik

Inledning Många naturliga fenomen kan modelleras med differentialekvationer. Ofta är dessa mycket svåra eller omöjliga att lösa analytiskt, varför olika approximativa lösningsmetoder används. En av dessa är Finita element-metoden (FEM). Denna rapport behandlar ett projekt beståe av kodning av en FEM-lösare i MatLab samt användandet av denna på två välkända randvärdesproblem, diffusions-reaktionsekvationen och diffusionskonvektionsekvationen. Den erhållna approximativa lösningen jämförs med en analytisk lösning av problemet. 2 Teori 2. Finita element-metoden Differentialekvationens lösning kan approximeras med en styckvis linjär, kontinuerlig, funktion. Detta kallas kontinuerlig Galerkin av grad, cg(). Då denna approximativa lösning är (styckvis) linjär kan den beskrivas som en linjärkombination av styckvis linjära basfunktioner, så kallade hattfunktioner. Att ast behöva undersöka dessa basfunktioner är grunden i lösningsmetoden. Som exempel har vi här behandlat diffusionsreaktionsekvationen, men proceduren är liknande för andra randvärdesproblem. { u (x) + u(x) =, < x < π u (DE) () () =, u(π) = För att problemet ska kunna behandlas, konverterar vi differentialekvationen till motsvarande variationsformulering genom att multiplicera (DE) med en testfunktion v(x) och integrera över det relevanta intervallet. För vårt exempelproblem (ekv. ) blir denna: Finn en funktion u(x) V sådan att: ( u (x) + u(x))v(x) dx = v(x) V := H (,π) := {w : ()v(x) dx ( w(x) 2 + w (x) 2) dx <, w(π) = } Via partiell integration erhåller vi följande förenklade formel: (VF) (2) [ ] x=π u (x)v(x) + u(x)v(x) + u (x)v (x) dx + u(x)v (x) dx = v(x) dx x= v(x) V (3) Insättning av randdata lämnar ast kvar integralerna, då v(pi) = och u () =. u (x)v (x) dx + u(x)v (x) dx = v(x) dx, v(x) V (4) Testrummet V är alltså alla funktioner som är begränsade och har begränsade derivator, samt uppfyller randvillkoren för (DE). Detta testrum är oändligt dimensionellt och testfunktionerna är oändliga till antalet. För att hitta en approximativ lösning behöver vi inskränka oss till ett ändligt dimensionellt rum. Detta är själva finita element-metoden.

Låt T h : = x < x < < x i < x i+ < < x N = π vara en likformig partition av det relevanta intervallet med delintervallängden h. Finn en approximativ lösning U(x) V h sådan att: U (x)v (x) dx + U(x)v (x) dx = v(x) dx, v(x) V h := {w : w är styckvis linjär på T h och kontinuerlig, w(π) = } (5) Den approximativa lösningen sammanbinder nodpunkterna (x, x i osv) med styckvis linjära segment. Vi tillåter härmed vår funktion att avvika från den analytiska lösningen så länge den är lika i nodpunkterna. Eftersom U(x) är styckvis linjär kan den skrivas som en summa av styckvis linjära basfunktioner {ϕ j (x)} N j= med koefficienterna ξ,..., ξ N. U(x) = N ξ j ϕ j (x) = U (x) = j= Insättning i (5) ger oss följande: N ξ j ϕ j(x) (6) j= N j= ξ j ϕ j(x)v (x) dx + ξ j ϕ j (x)v (x) dx = v(x) dx, v(x) V h (7) Vi väljer nu testfunktionerna som hattfunktionerna ϕ (x),...,ϕ (N ) (x). Eftersom ingen homogen dirichletdata finns i intervallets startpunkt krävs också en halv hattfunktion som bas i x. Vårt problem är nu formulerat som följande: N [ ( j= ) ( ϕ j(x)ϕ π ] i(x) dx ξ j + ϕ j (x)ϕ i(x) dx )ξ j = ϕ i (x) dx, Ekvationen kan nu skrivas om på matrisform. Vi får följande samband: S = { s ij } N i,j=, s ij = M = { } N m ij i,j=, m ij = ξ ξ 2 ξ =. ξ N b b N b 2 b =. b i = ϕ j(x)ϕ i(x) dx ϕ j (x)ϕ i(x) dx ϕ i (x) dx i =, 2,..., N Om differentialekvationen hade innehållit en term av första ordningen, hade en konvektionsmatris uppstått vars element är beroe av ϕ j(x)ϕ i (x) dx. Med hjälp av resonemang kring hattfunktionernas stöd och överlapp kommer vi fram till sambandet att (8) (9) 2

s ij = h, i = j = m ij = 2h 6, i = j = s ij = 2 h, i = j > s ij =, i j = h s ij =, i j > m ij = 4h 6, i = j > m ij =, i j = h m ij =, i j > Det vill säga, matriserna S och M får följande utsee: 2 S = 2.. h......... M = h 4.. 6.............. 2... 4 2 4 Eventuell konvektionsmatris är antisymmetrisk och har nollor på huvuddiagonalen. Den ser ut som följande (notera avsaknandet av h-beroe): K =.. 2......... (2).... Styvhets- och massmatriserna är i allt väsentligt lika för alla problem, ast avvikande i elementen (,) och (N,N) om randvillkoret i första respektive sista punkten är nollskilda. Då konvektionsmatrisens huvuddiagonal ast innehåller nollor påverkas den inte av eventuella halvhattfunktioner. De tre matriserna skalas också efter längden på varje delintervall (h) och koefficienterna framför u (x), u (x) och u(x), vilket enkelt ses i variationsformuleringen för problemet i fråga. Med liknande resonemang fås elementen i lastvektorn b. Arean under varje hattfunktion är en triangel med höjden och basen 2h. Integralen ϕ i(x) dx motsvarar denna area och evalueras därför till h, utom i x där vi har en halv hattfunktion, varför basen blir h och integralens värde därför halveras. Lastvektorn ser alltså ut som följande: 2 b = h. Att finna den approximativa lösningen till vårt randvärdesproblem innebär nu att lösa matrisekvationen (S + M)ξ = b. 2.2 Finit element-lösare i MatLab MatLab-koden grundar sig på den inbyggda funktionen för lösning av matrisekvationer av typen Ax = b. Styvhets-, mass- och konvektionsmatriserna byggs upp genom iteration () () (3) 3

och korrigeras för halvhattfunktioner där randvillkoren är nollskilda. Detsamma gäller lastvektorn b. De olika matriserna summeras sedan, och ekvationen (S + M + K)ξ = b löses med MatLabs backslash-operator. Koden i sin helhet finns i bilaga A. Randvärdesproblemen som löses är diffusions-reaktionsekvationen { u (x) + u(x) =, < x < π u (4) () =, u(π) = och diffusions-konvektionsekvationen εu (x) + 2 u (x) =, u() = u(π) = < x < π där ε är en liten, konstant, godtycklig parameter, i koden satt som ε = 3. (5) Figur : Diffusions-reaktionsekvationens analytiska lösning samt cg()-lösning med antalet delintervall N = 4 respektive N = 3. Notera approximationens närhet till den analytiska lösningen redan vid låga värden på N. Approximationen är fixerad vid y = i x = π för att svara mot dirichletdatan. 4

Figur 2: Diffusions-konvektionsekvationens analytiska lösning samt cg()-lösning med antalet delintervall N = 4 respektive N = 3. Notera att den approximativa lösningen här är fixerad i bägge ändpunkterna, vilket svarar mot dirichlet-randvillkoren. A Bilaga: MatLab-kod A. Diffusions-reaktionsekvationen %% D i f f u s i o n s r e a k t i o n s e k v a t i o n e n clc ; c l f ; a = ; % I n t e r v a l l e t : c = pi ; % < x < p i N = 3 ; % Antal d e l i n t e r v a l l = N+ ( Detta ger b ä t t r e approximation ) h = ( c a ) / (N) ; % D e l i n t e r v a l l ä n g d e n x = linspace ( a, c, N+); % Nodpunkter % A n a l y t i s k l ö s n i n g u = @( x ) ( exp( pi x) exp( pi+x)++exp(2 pi ))./(+exp(2 pi ) ) ; fplot (u, [ a c ], k ) ; hold on ; b = ones (N, ) ; % L a s t v e k t o r n % S t y v h e t s m a t r i s S = zeros (N,N) ; for i = :N for j = :N i f ( i==j ) % Phi prim ö v e r l a p p a r h e l t S ( i, j ) = 2 ; e l s e i f ( abs ( i j ) == ) % Halvt ö v e r l a p p S ( i, j ) = ; 5

S (, ) = ; % H a l v h a t t S=/h S ; på x x % Massmatris M = zeros (N,N) ; for i = :N for j = :N i f ( i==j ) % Som ovan f a s t Phi M( i, j ) = 4 ; e l s e i f ( abs ( i j ) == ) %... M( i, j ) = ; M(, ) = 2 ; % H a l v h a t t på x x M=h/6 M; b ( ) = /2; % H a l v h a t t! b = h b ; x i = ( S+M)\ b ; % Lös A x i = b U = zeros (N+, ) ; % Korrigera f ö r randdata U( p i ) = U( :N) = x i ; plot ( x, U, r. ) ; xlabel ( x ) ; ylabel ( y ) ; leg ( y = u ( x ), y = U( x ) ) ; A.2 Diffusions-konvektionsekvationen %% D i f f u s i o n s k o n v e k t i o n s e k v a t i o n e n clc ; c l f ; a = ; % I n t e r v a l l e t : c = pi ; % < x < p i N = 3 ; % Antal d e l i n t e r v a l l = N+ ( Detta ger b ä t t r e approximation ) h = ( c a ) / (N+); % D e l i n t e r v a l l ä n g d e n x = linspace ( a, c, N+2); % Nodpunkter e = 3 ; % G o d t y c k l i g t, l i t e t, e p s i l o n b = ones (N, ) ; % A n a l y t i s k l ö s n i n g u = @( x ) 2 ((exp( pi /(2 e )) ) x pi exp( x /(2 e ))+ pi ) / ( exp( pi /(2 e ) ) ) ; fplot (u, [ a c ], k ) ; 6

hold on ; % S t y v h e t s m a t r i s S = zeros (N,N) ; for i = :N for j = :N i f ( i==j ) % Som ovan S ( i, j ) = 2 ; e l s e i f ( abs ( i j ) == ) % Som ovan S ( i, j ) = ; S=e /h S ; % Ta hänsyn t i l l e p s i l o n % Konvektionsmatris C = zeros (N,N) ; for i = :N for j = :N i f ( ( i j ) == ) % Under diagonalen ( rad > kolonn ) C( i, j ) = ; e l s e i f ( ( j i ) == ) % Över diagonalen ( rad < kolonn ) C( i, j ) = ; C=/2 /2 C; % Glöm i n t e k o e f f i c i e n t e n framför u ( x )! b ( ) = ; % Inga b (N) = ; %... b = h b ; x i = ( S+C)\ b ; h a l v h a t t a r U = zeros (N+2, ) ; % Korrigera f ö r randdata U() = U( p i ) = U( 2 :N+) = x i ; plot ( [ x ], U, r. ) ; xlabel ( x ) ; ylabel ( y ) ; leg ( y = u ( x ), y = U( x ) ) ; 7