You are on page 1of 34

SVEUILITE U RIJECI

TEHNIKI FAKULTET

Alen Pavlini

Rjeavanje parcijalne diferencijalne jednadbe primjenom metode


konanih razlika

-Seminarski rad-

KOLEGIJ: Matematiko modeliranje i numerike metode


AKAD.GOD.: 2014./2015.
PDS: Elektroenergetika i nove tehnologije

1
Sadraj
1. Uvod....................................................................................................................................1
2. Osnovni koncepti metode konanih razlika.........................................................................2
2.1. Numerika aproksimacija derivacija konanim razlikama.............................................2
2.2. Primjena metode konanih razlika u rjeavanju parcijalnih diferencijalnih jednadbi. . .5
3. Definiranje problema...........................................................................................................7
4. Rjeavanje postavljenog problema primjenom Matlab skripte.........................................10
5. Rjeavanje postavljenog problema primjenom PDE toolbox-a.........................................16
6. Usporedba rezultata odreenih putem Matlab skripte i toolbox-a....................................21
7. Zakljuak...........................................................................................................................24
Literatura...................................................................................................................................25
Prilog A.....................................................................................................................................26

2
1. Uvod
Kroz rad se sustavno razmatra metoda konanih razlika kao jedan od naina numerikog
rjeavanja parcijalnih diferencijalnih jednadbi. U prvom dijelu rada razmatra se s teoretskog
aspekta nain rjeavanja parcijalne diferencijalne jednadbe primjenom metode konanih
razlika. Time se obuhvaaju naini aproksimacije derivacija konanim razlikama te se prikazuje
procedura rjeavanja primjenom metodom konanih razlika. Potom se definira konkretan
problem iz prijenosa topline koji se eli rijeiti primjenom metode konanih razlika. Pri tome se
definiraju i same jednadbe konanih razlika i rubnih uvjeta koji se implementiraju kasnije u
samom kodu prilikom programiranja. Slijedei dio rada razvija i opisuje Matlab skriptu koja
omoguuje rjeavanje postavljenog problema primjenom metode konanih razlika. Dodatno,
detaljno se u ovom dijelu rada opisuje nain programiranja same skripte i rjeavanja
postavljenog problema u Matlabu. Kako bi se provjerila ispravnost isprogramirane Matlab
skripte kompletan model se modelira u Matlab-ovom PDE toolbox-u te se na kraju rada
provjeravaju dobiveni rezultati putem PDE toolbox-a te isprogramirane Matlab skripte.

1
2. Osnovni koncepti metode konanih razlika
U inenjerskim problemima esto se moraju rjeavati obine ili parcijalne diferencijalne
jednadbe. Kao jedna od numerikih metoda za rjeavanje takvih jednadbi javlja se metoda
konanih razlika. Osnovna ideja te metode je zamjena derivacija njihovom diskretiziranom
formom poznatom pod nazivom aproksimacija konanim razlikama ili diferencijama.
Koritenjem tako definiranih aproksimacija derivacija za sve toke diskretizranog prostora
definiranog problema (u kojem se trai rjeenje same jednadbe), problem rjeavanja
diferencijalne jednadbe svodi se na problem rjeavanja sustava linearnih ili nelinearnih (ako je
diferencijalna jednadba nelinearna) jednadbi. Dodatno, prilikom rjeavanja potrebno je u
metodi na odgovarajui nain uzeti u obzir same postavljene granine uvjete. U nastavku se u
prvom dijelu prikazuje nain numerike aproksimacije derivacija putem konanih razlika, a
potom se prikazuje njihova primjena u rjeavanju diferencijalnih jednadbi odnosno sam nain
primjene metode konanih elemenata.

2.1. Numerika aproksimacija derivacija konanim razlikama

Radi preciznog matematikog shvaanja numerikih aproksimacija derivacija putem konanih


razlika potrebno je koristiti razvoj funkcije u Taylor-ov red. Neka se pretpostavi da se razmatra
funkcija u(x) koja u podruju razmatranja posjeduje derivaciju n+1 reda. Tada ukoliko se
odabere neka toka u podruju razmatranja npr. xi mogue je razvojem funkcije u Taylor-ov red
zapisati izraz (1).
2 n
' '' ( xx i ) ( n) ( xx i )
u ( x ) =u ( xi ) +u ( x i ) ( xx i ) +u ( xi ) ++u ( x i) (1)
2! n!

gdje je:
xi-odabrana toka oko koje se razvija Taylor-ov red
n-odabrani red Taylor-ovog reda
Odgovarajuom primjenom izraza (1) cilj je odrediti vrijednost prve derivacije u toci x i. Kako
bi se navedeno postiglo potrebno je raspisati Taylor-ov red za toke x i+x odnosno xi-x ime
se dobivaju izrazi (2) i (3).
x 2
u ( x i+ x )=u ( x i ) +u' ( x i ) x+u ' ' ( x i ) + (2)
2!

2
x
u ( x ix ) =u ( x i )u' ( xi ) x+u' ' ( x i ) + (3)
2!

gdje je
2
x-mali inkrement u smjeru x-a

Iz izraza (2) i (3) moe se zanemarenjem viih lanova Taylor-ovog reda od prvog izvesti
aproksimacija prve derivacije konanom razlikom unaprijed i unatrag prema (4) i (5).
' ' u( x i + x)u( x i ) u i+1ui
u ( x i ) =ui= +O( x)
x x

(4)
u( x i)u( x ix) u u
u' ( x i ) =u'i= + O(x ) i i1
x x

(5)
gdje je
ui+1=u(xi+x)-toka nakon toke i u diskretizaciji problema
ui-1=u(xi-x)- toka prije toki i u diskretizaciji problema
O-greka aproksimacije
U izrazima (4) i (5) uvedene su oznake koje se najee koriste u metodi konanih razlika.
Naime obzirom da se problem diskretizira s nekim razmakom x toku koja je od i (koordinata
xi) razmaknuta za +x oznaava se sa i+1, a toka koja je razmaknuta za x sa i-1. Dodatno,
iz izraza (4) i (5) vidi se da je dana aproksimacije prve derivacije u toki i prvog reda. Znatno
bolju aproksimaciju prve derivacije mogue je dobiti oduzimanjem izraza (2) i (3) te
zanemarenjem viih lanova od prvog reda, ime se dolazi do aproksimacije derivacije
centralnom konanom razlikom prema izrazu (6).
' ' u( x i + x)u( x i x ) 2 ui+1 ui1
u ( x i ) =ui= +O( x )
2 x 2 x

(6)
Aproksimacija dana izrazom (6) za prvu derivaciju je drugog reda te se ona gotovo uvijek
primjenjuje radi aproksimacije prve derivacije.
U diferencijalnim jednadbama pored prve derivacije veoma se esto pojavljuje druga
derivacija koju je mogue aproksimirati prema izrazu koji se dobije zbrajanjem izraza (2) i (3)
te zanemarenjem viih lanova od drugog reda. Time se dobiva aproksimacija druge derivacije
centralnom konanom razlikom prema izrazu (7) koja je ponovno drugog reda.

3
u ( x i + x ) 2 x i +u( x ix) u i+12 u i+u i1
u' ' ( x i ) =u'i ' = 2
+ O( x 2) 2
x x

(7)
Pored izvoda iz Taylor-ovog razvoja mogue je drugu derivaciju izvesti i iz same definicije
koritenjem prvih derivacija u polovinim tokama i+1/2 i i-1/2 prema izrazu (8).
ui+ 1ui u iui1
' '
'' u u
i +1/ 2 i1/ 2 x x ui +12 ui +ui1
ui = lim = 2
x 0 x x x

(8)
ui+1/2=u(xi+1/2x)- toka pomaknuta za +1/2x od toke i
ui-1/2=u(xi-1/2x)-toka pomaknuta za -1/2x od toke i

Obzirom da se u radu razmatra dvodimenzionalan problem potrebno je proiriti koncept


definiran za aproksimacije konanim razlikama za funkciju u(x) na funkciju u(x,y).
Ponovno se za izvoenje izraza pri mora raspisati Taylor-ov red za funkciju u(x,y), ali sada za 4
toke to su redom (xi+x,yj), (xi-x,yj) te (xi,yj+y), (xi,yj+y) to predstavljaju izrazi (9),(10)
te (11), (12).
u 2 u x 2
u ( x i+ x , y j )=u ( x i , y j ) + ( xi , y j ) x+ 2 ( x i , y j ) + (9)
x x 2!

u 2 u x 2
u ( x ix , y j ) =u ( xi , y j ) ( x i , y j ) x+ 2 ( x i , y j ) + (10)
x x 2!

u 2 u y 2
u ( x i , y j + y )=u ( x i , y j ) + ( x i , y j ) y + 2 ( x i , y j ) + (11)
y y 2!

2 2
u u y
u ( x i , y j y ) =u ( x i , y j ) ( x , y ) y + 2 ( x i , y j ) + (12)
y i j y 2!

gdje je:
y-mali inkrement u smjeru y-a
Sada se parcijalna derivacije po x-u u toci (xi.,yj) moe aproksimirati konanom razlikom
unaprijed i unatrag koritenjem izraza (9) i (10) uz zanemarenje lanova viih od prvog reda
prema izrazu (13) i (14).

4
u
x
( ( ) = u(x + x , yx)u (x , y ) +O( x) u
x i , y j )=
u
x i. j
i j i j i+1, j ui , j
x

(13)
u u u ( x i , y j )u( x i x , y j ) u u
x
( ( )
x i , y j )=
x i. j
=
x
+O(x) i , j i1, j
x

(14)
Pri tome vano je voditi rauna da je sada problem diskretiziran u dvodimenzionalnom prostoru
pri emu indeks i oznaava kretanje u x-osi za x, a indeks j u y-osi za y. Dodatno, gore
uvedeni indeksi se najee koriste kod metode konanih razlika.
Parcijalna derivacija po y-u u toci (xi.,yj) moe se aproksimirati konanom razlikom unaprijed
i unatrag koritenjem izraza (11) i (12) uz zanemarenje lanova viih od prvog reda prema
izrazu (15) i (16).
u u u(x i , y j+ y )u(x i , y j ) u i , j +1ui , j
y i j ( )
( x , y )= y
i. j
=
y
+O( y )
y

(15)
u u u ( xi , y j ) u( x i , y jy) u u
y
( ( )
xi , y j ) =
y i. j
=
y
+O(y) i , j i , j1
y

(16)

Toniji izrazi za parcijalnu derivaciju po x-u mogue je dobiti oduzimanjem izraza (9) i (10), a
po y-u (11) i (12) te uz zanemarenje viih lanova to predstavlja aproksimaciju prema
centralnim konanim razlikama definiranu izrazima (17), (18).
u
x
( ( ) = u( x + x , y 2)u
x i , y j )=
u
x i. j
i
x
(x x , y )
j i
+O( x )
u j 2 u i1, j
i+ 1, j
2 x

(17)
u u u ( xi , y j + y )u ( xi , y j y) u u
y
( ( )
xi , y j ) =
y i. j
=
2 y
+O( y 2) i , j +1 i , j1
2 y

(18)
Drugu parcijalnu derivaciju po x-u te po y-u ako se koristi osnovna njihova definicija mogue
aproksimirati centralnim konanim razlikama prema izrazima (19) i (20).

5
ui+ 1, ju i , j ui , jui1, j
2 2
u '
u ' ui +1, j2 ui , j+ ui1, j
u
x 2( i ( )
x , y j )=
u
x2 i, j
= lim
x 0
i+1 /2, j
x
i1 /2, j

x
x
x
=
x 2

(19)
ui , j+1u i , j ui , jui , j1
' '
2 2
u u u 2 ui , j +ui , j1
u
y 2( i ( )
x , y j )=
u
y2 i, j
= lim
y 0
i , j +1/ 2
y
i , j1/ 2

y
y
y
= i , j+1
y 2

(20)
Samim time definirane su aproksimacije konanim razlikama koje su potrebne za izradu ovog
rada. Ukoliko su potrebne derivacije vieg reda ili vie varijabli izneseni koncepti se mogu
proiriti na odgovarajui nain.

2.2. Primjena metode konanih razlika u rjeavanju parcijalnih diferencijalnih jednadbi

Kod primjene metode konanih razlika prvi korak je diskretizirati prostor rjeavanja parcijalne
diferencijalne jednadbe na toke u kojima se trai rjeenje nepoznate funkcije. U sluaju da se
razmatra dvodimenzionalni problem primjer diskretizacije problema rjeavanja dan je prema
slici 1.

Slika 1. Primjer diskretizacije problema rjeavanja

Sa same slike 1. moe se zakljuiti da je podruje problema (kvadrat) podijeljeno na 64 toke.


Kao rjeenje metodom konanih razlika dobiti e se iznosi nepoznate funkcije samo u tim
tokama pa je diskretizacija problema svakako vaan korak u rjeavanju metodom konanih
razlika. Dodatno, vano je naglasiti da sami x i y ne moraju nuno biti identini u podruju

6
rjeavanja, ali niti konstanti te je mreu raznim algoritmima mogue prilagoditi razmatranom
problemu.
Nakon diskretizacije problema rjeavanja potrebna je pretvorba parcijalne diferencijalne
jednadbe u jednadbu baziranu na konanim razlikama. U radu se rjeava jednadba oblika
prema izrazu (21).
( k ( x , y ) u )=f

(21)
gdje je:
k-konstata ovisna o prostoru
u-traena funkcija
f-izvor
Jednadba (21) predstavlja nehomogenu Poisson-ovu jednadbu. Obzirom da se razmatra u
dvodimenzionalnom prostoru prvo je potrebno odrediti drugu parcijalnu derivaciju po x-u i y-u
desne strane jednadbe izraza (21). Navedeno predstavljaju izrazi (22) i (23).
ui+1, ju i , j u u
k i+1 /2, j k i1/ 2, j i, j i1, j k i+ 1 , j ui +1, j k i +1 , j +k i1 , j u i , j + k i 1 , j u i1, j
( )
u x x
( k
x x )i,j

x
=
2 2

x 2
2 2

(22)
ui , j+1ui , j ui , ju i , j 1 k
1 ui , j+1 k 1 u i , j + k 1 u i , j 1
u
k i , j +1/ 2
y
k i, j1 /2
y i , j+ i , j+
1 +k
i , j ( i , j )
( k
y y ) i, j

y
=
2 2

y
2
2 2

(23)
Desna stran izraza (21) se lako odredi prema (24).
(f )i , j=f i , j

(24)
Stoga jednadba (21) u metodi konanih razlika prelazi u (25).
k ui +1, j k
1
i+ , j
2
( 1
i+ , j
2
+k 1
i , j
2
) u i,j +k 1
i , j
2
u i1, j k
+
i,j+
1
2
ui , j+1 k
( i , j+
1
2
+k
i , j
1
2
) ui, j +k
i , j
1
2
ui 1, j
=f i , j
2
x y 2

(25)
Nakon to se aproksimira parcijalna diferencijalna jednadba konanim razlikama opi izraz se
raspisuje za sve toke koje su dobivene diskretizacijom. Pri tome iznimku predstavljaju toke u

7
kojima su definirani granini uvjeti. Kao to je vidljivo jednadba (25) (ukoliko f nije
nelinearan) predstavlja linearnu jednadbu, a kako se jednadba raspisuje za sve toke, uz
uvaavanje graninih uvjeta u definiranim tokama, problem se svodi na rjeavanje linearnog
sustava jednadbi definiranog prema (26).
A u=b

(26)
Rjeavanjem linearnog sustava jednadbi prema (26) dobiva se rjeenje u razmatranim tokama
problema rjeavanja te je time proces rjeavanja poetne parcijalne diferencijalne jednadbe
zavren.

U slijedeim poglavljima izvriti e se preciznija formulacija jednog konkretnog problema i


postupak njegova rjeavanja metodom konanih razlika.

8
3. Definiranje problema

Razmatra se u dvodimenzionalnom prostoru Poissonova jednadba za provoenje topline u


stacionarnom stanju te nehomogenoj domeni izraena jednadbom (27).
( T )=q

(27)
gdje je:
q-izvor topline (W/m3)
-specifina toplinska vodljivost(W/mK)
T-temperatura (K)
U razmatranom problemu jednadbu u domeni rjeavanja mogue zapisati prema izrazu (28).
( T )=q ,u 1

(28)
( T )=0,u 2

Kao izvor q uzet je izvor linearno zavisan o temperaturi prema izrazu (29).
q= A1 + A2 T

(29)
gdje su:
A1-konstanta 1 linearno zavisnog izvora (W/m3)
A2-konstanta 2 linearno zavisnog izvora (W/Km3)
Domena 1 predstavlja krug radijusa r centriranog u toki (Lx/2,Ly/2) koji se nalazi unutar 2,
doim 2 predstavlja podruje pravokutnika stranica Lx X Ly koji ne obuhvaa podruje 1
prema izrazu (30).

{ 1 :(xLx /2)2+( yL y /2)2 r 2


2 :0< x < L x , 0< y < L y ,( xL x /2)2 +( y L y /2)2 >r 2 (30)

Prostorna ovisnost toplinske vodljivosti uzeta je prema izrazu (31).

9
( x , y )=
{
1 u 1
2 u 2

(31)
gdje su:
1- specifina toplinska vodljivost prvog medija (W/Km)
2-specifina toplinska vodljivost drugog medija (W/Km)
Kao granini uvjeti za rjeavanje diferencijalne jednadbe uzeti su tri Neumann-ova uvjeta i
jedan Dirichlet-ov na stranicama pravokutnika prema (32).

{
T =T a , y =L y
T
=0, y=0
n
T
=0, x=0
n
T
=0, x=L x
n

(32)
gdje je n:
n-normala
Ta-poznata vrijednost temperature(K)

Kompletno postavljeni problem prikazan je na slici 2.

10
Slika 2. Razmatrani model u proraunu

Kako je prikazano u prethodnom poglavlju jednadba (27) se moe u metodi konanih razlika
prikazati prema izrazu (33).
1)U podruju 1:
1
(
1 T i+1, j 1 + 1 T i , j + 1 T i1, j
( x )2 i+ 2 , j i+ , j
2 (
i , j
2
i , j
2 ) ) +

1
(
1 T i , j +1 1 + 1 T i , j + 1 T i , j1 = A1 A 2 T i , j
( y )2 i , j+ 2 i , j+
2 (
i , j
2
i,j
2 ) )
(33)
Sreivanjem se dobiva izraz (34).

( ( y )2 1
i+ , j
2
T i+1, j ( y )2
( ( 1
i+ , j
2
+ 1
i , j
2 ) + ( x )2
( i , j+
1
2
+
i , j
1
2
( x )2 ( y )2 A 2 T i , j+ ( y )2
) ) 1
i , j
2
T i1, j + (

(34)

11
Ukoliko vrijedi x=y=h moe se zapisati izraz (35).

( 1
i+ ,j
2 ((
T i +1, j 1
i+ , j
2
+ 1
i , j
2
+
)( i, j+
1
2
+
i , j
1
2 ) ( h )2 A 2 T i , j+
) 1
i , j
2
T i1, j+
i , j+
1
2
T i , j +1+
i , j
1
2 )
T i , j1 =A 1

(35)
2) Slino u podruju 2 mogue je zapisati izraz (36).
1
(
1 T i+1, j 1 + 1 T i , j + 1 T i1, j
( x )2 i+ 2 , j i+ , j
2
i , j
2 ( i , j
2 ) ) +

1
(
1 T i , j +1 1 + 1 T i , j + 1 T i , j1 =0
( y )2 i , j+ 2 i , j+
2 (
i , j
2
i,j
2 ) )
(36)
Sreivanjem se dobiva izraz (37).

( ( y )2 1
i+ , j
2
T i+1, j ( y )2
( ( 1
i+ , j
2
+ 1
i , j
2 ) + ( x )2
( i , j+
1
2
+
i , j
1
2 )) T i , j + ( y )2 1
i , j
2
T i1, j + ( x )2
i,j+
1
2
T i , j+ 1

(37)

Ukoliko vrijedi x=y=h moe se zapisati izraz (38).

( 1
i+ ,j
2 ((
T i +1, j 1
i+ , j
2
+ 1
i , j
2
) +( i, j+
1
2
+
i , j
1
2
)) T i, j + 1
i , j
2
T i1, j+
i , j+
1
2
T i , j +1+
i , j
1
2 )
T i , j1 =0

(38)
Granini uvjeti uzimaju se u obzir prema izrazu (39).

{
T i , j=T a , y =L y
T i , jT i . j +1=0, y=0
T i , jT i+1. j=0, x=0 (39)
T i , jT i1. j=0, x=L x

U konanici kada se raspiu izrazi (34) odnosno (37) za svaku toku obuhvaenu
diskretizacijom uz uvaavanje graninih uvjeta prema (39) problem se svodi na rjeavanje
linearnog sustava jednadbi definiranog prema izrazu (40).

12
A T =b

(40)

13
4. Rjeavanje postavljenog problema primjenom Matlab skripte

Opis kompletnog rjeavanja problema biti e prikazan kroz Matlab skriptu opisanu u ovom
poglavlju i danu u prilogu A u potpunom formatu radi preglednosti.
Opis pojedinih dijelova Matlab skripte (a ujedno i samog rjeenja) je:
1) Definiranje ulaznih parametara u model
Kao nuni parametri za sam model potrebni su duljina i visina pravokutnika (L x,Ly), radijus
kruga (r) (koji mora biti manji od polovine duljine i visine pravokutnika), konstante linearno
zavisnog izvora (A1 i A2) te specifine toplinske vodljivosti prvog i drugog medija ( 1, 2).
Dodatno, potrebno je definirati vrijednost Dirichlet-ovog graninog uvjeta za sve toke
y=Ly (Ta).
Isjeak Matlab skripte kojom se vri pridruivanje odreenih ulaznih parametra je:
%definiranje ulaznih parametara u model
Lx=2;%duina pravokutnika
Ly=2;%visina pravokutnika
sx=Lx/2;%sredite kruga x koordinata
sy=Ly/2;%sredite kruga y koordinata
r=0.5;%polumjer kruga (manji od Lx/2 i Ly/2)
A1=5000;%konstanta 1 linearno zavisnog izvora
A2=30;%konstanta 2 linearno zavisnog izvora
lambda1=1/0.024;%specifina toplinska vodljivost u podruju 1
lambda2=1/3.5;%specifina toplinska vodljivost u podruju 2
Ta=293;%vrijednost temperature na gornjoj stranici pravokutnika

2) Diskretizacija domene rjeavanja


Radi diskretizacije domene rjeavanja potrebno je unijeti koliko se toaka eli napraviti u x
smjeru (nx) te koliko u y smjeru (n y). Za sve toke za koje se trai rjeenje razmatranog
problema pretpostavlja se da su u x odnosno y osi jednako razmaknute. Razmak meu tokama
u x smjeru odreuje se kao dx=Lx/(nx-1), a u y smjeru dy=Ly/(ny-1).
Isjeak Matlab skripte kojom se vri diskretizacija problema rjeavanja:
%diskretizacija prostora rjeavanja
nx=20;%broj toaka x smjer
ny=20;%broj toaka y smjer
dx=Lx/(nx-1);%razmak u smjeru x
dy=Ly/(ny-1);%razmak u smjeru y

Ukoliko bi primjerice Lx=2 i Ly=2 prema gore definiranoj diskretizaciji od nx=20 i ny=20 dobio
bi se razmak u smjeru x i y od dx=dy=0,1053. Navedeno znai da bi toke u x i y smjeru bile
razmaknute za iznose od 0, 0,1053, 0,2106, 0,3159, ..., 2. Dodatno, time bi se diskretizirao
prostor u 400 toaka.
Diskretizacija problema je veoma vaan korak jer se metodom konanih razlika odreuje
rjeenje samo u tokama koji su obuhvaeni diskretizacijom domene problema.

14
3) Odreivanje broja elemenata matrice koeficijenata razliitih od nule
U realnoj situaciji matrica koeficijenata dimenzija je [n xny, nxny]. Primjerice ako se diskretizira
20 toka po x-u i y-lonu (nx=ny=20) matrica ima 400 redova i 400 stupaca odnosno 160000
elemenata. Meutim, sama matrica koeficijenata ima puno elementa koji su jednaki nuli. Stoga,
se u samom kodu kako bi se ostvarile utede u memoriji prvo odreuju samo elementi matrice
koji su razliiti od 0 te se pamte njihove pozicije i iznosi. Svaka toka u kojoj vrijedi jednadba
(27) predstavlja 5 elemenata u matrici koeficijenata razliitih od nule. Toke u kojima vrijede
Dirchlet-ovi uvjeti predstavljaju jedan element u matrici koeficijenata razliit od 0, a toke u
kojima vrijede Neumann-ovi uvjeti dva. Iz svega razmatranog mogue je zakljuiti da za
razmatrani problem broj elementa u matrici koeficijenata razliitih od 0 za modeliranje
graninih uvjeta je 2nx+2(ny-2)+2(ny-2)+nx (3 Neumann-ova i jedan Dirchlet-ov granini
uvjet), a za ostale toke (nxny-2nx-2(ny-2))5.
Isjeak Matlab skripte kojom se vri odreivanje broja elementa matrice koeficijenata razliitog
od 0:
%odreivanje broja elemenata matrice koeficijenata razliitog od 0
c=3*nx+4*(ny-2)+5*(nx*ny-(2*nx+2*(ny-2)));%broj elemenata A razliit od 0

Ukoliko bi nx=ny=20 uz Lx=Ly=2 i r=0,5 tada je broj elemenata matrice koeficijenata razliit
od 0 svega 1752. S druge strane matrica A u tome sluaju ima kako je prethodno reeno 160000
elemenata pa samim primjerom jasne su prednosti u memoriji koje se ostvaruju.
4) Odreivanje broja elemenata vektora desne strane razliitog od nule
Broj elemenata vektora desne strane razliitih od 0 nije mogue jednostavno odrediti, obzirom
da ovisi o broju toaka koje se nalaze unutar ili izvan definiranog kruga. Unutar kruga te kod
Dirchlet-ovih graninih uvjeta vektor desne strane ima odreenu vrijednost, ali izvan je ta
vrijednost jednaka 0. U Matlabu je problem odreivanja elemenata vektora desne strane
razliitog od 0 rijeen tako da se odredi pomou for petlji toke koje se nalaze unutar kruga. Na
taj nain ukupan broj elemenata vektora desne strane razliitih od 0 odreuje se kao broj toaka
koje se nalaze unutar kruga u zbroju sa nx (toke na Dirchlet-ovim graninim uvjetima).
Isjeak Matlab skripte kojom se vri odreivanje broja elementa vektora desne strane razliitog
od 0:
%odreivanje broja elemenata vektora desne strane razliitog od 0
krug=0;%broja elemenata unutar kruga
xi=0;%poetna vrijednost koordinate x
yi=0;%poetna vrijednost koordinata y
for j=1:1:ny; %petlja po y tokama (stupcima)
for i=1:1:nx;%petlja po x tokama (redovima)
xi=(i-1)*dx;
if (((xi-sx)^2+(yi-sy)^2)<=r^2 || abs(((xi-sx)^2+(yi-sy)^2)-r^2)<0.0001) %provjera da li je unutar kruga
krug=krug+1;%uveanje brojaa ukoliko je toka u krugu
end
if(i==ny && j~=ny)%logika petlja radi praenja pozicije u koordinatama x,y

15
xi=0;
yi=yi+dy;
end
end
end
c1=krug+nx;%broj elemenata vektora desne strane razliitog od 0

5) Definiranje pomonih varijabli


Pomone varijable ukljuuju koordinate xi i yi pomou kojih se vri (prilikom pridruivanja
elemenata matrice koeficijenata i vektora desne strane razliitih od 0) odreivanje trenutne
koordinate toke obuhvaene diskretizacijom, kk koji predstavlja broj toke u diskretizaciji (od
1 do nxny), tri vektora dimenzija c radi spremanja pozicije i vrijednosti elemenata matrice
koeficijenata A razliite od 0 te tri vektora dimenzija c1 (pri emu je druga pozicija uvijek 1) za
spremanje vektora desne strane razliitih od nule. Dodatno, jo je potrebno definirati broja
elemenata matrice koeficijenata i vektora desne strane razliitog od 0.
Isjeak Matlab skripte kojom se vri definiranje pomonih varijabli:
%definiranje pomonih varijabli
xi=0;%poetna vrijednost koordinate x
yi=0;%poetna vrijednost koordinata y
kk=1;%broja toaka
Matrica_A_i=zeros(c,1);%definiranje vektora za spremanje indeksa i matrice koeficijenata A razliitog od 0
Matrica_A_j=zeros(c,1);%definiranje vektora za spremanje indeksa j matrice koeficijenata A razliitog od 0
Matrica_A_v=zeros(c,1);%spremanje vrijednosti elementa ij matrice koeficijenata razliitog od 0
b_i=zeros(c1,1);%definiranje vektora za spremanje indeksa i u kojoj je vektor desne strane razliit od 0
b_j=ones(c1,1);%definiranje vektora za spremanje indeksa j u kojoj je vektor desne strane razliit od 0
b_v=zeros(c1,1);%definiranje vektora za spremanje vrijednosti vektora desne strane razliitog od 0
s=1;%broja elemenata matrice koeficijenata razliit od 0
b1=1;%broja za spremanje elementa vektora desne strane razliitog od 0

6) Odreivanje elemenata matrice koeficijenata i vektora desne strane razliitih od 0


U ovome dijelu potrebno je odrediti vrijednosti i pozicije svih elemenata matrice koeficijenata i
vektora desne strane razliitih od 0 te spremiti ih u prethodno definirane vektore.
Postupak se provodi tako da se prvo za svaku toku odreuje u kojom podruju pripada.
Razlikuju se 6 podruja to su: podruja 4 granina uvjeta, podruje kruga te ostatak podruja.
Toke se vrte pomou dvije for petlje od pozicije koju se smatra (0,0) pa do (dx(n x-1),0) potom
se uvea dy te se kree nanovo od (0,dy) do (dx(n x-1),dy) te tako redom dok se na kraju ne
doe do zadnjeg reda koji kree od (0,dy(ny-1)) do (dx*(nx-1), dy(ny-1)). Prilikom svakog
obrtaja for petlji provjerava se putem if petlji kojem podruju konkretna toka pripada.
Kada se odredi kojem podruju neka toka pripada tada se na temelju definiranih izraza u
poglavlju 3. (za granine uvjete izraz (39), za podruje kruga izraz (34) te za ostalo podruje
izraz (37)) sprema na odgovarajui nain pozicija i vrijednost matrice koeficijenata te vektora
desne strane razliitog od 0. Dodatno, prilikom ulaska u podruja koja nisu odreena graninim
uvjetima putem if petlji odreuju se i vrijednosti toplinskih vodljivosti u meu tokama
diskretizacije (to je nuno radi primjene izraza (34) i (37)).

16
Isjeak Matlab skripte kojom se vri odreivanje elemenata matrice koeficijenata i vektora
desne strane razliitih od 0:
%odreivanje elemenata matrice A i vektora desne strane razliitih od 0
for j=1:1:ny; %petlja po stupcima(y-lonu)
for i=1:1:nx;%petlja po redivima (x-u)
%izraun koordinate x
xi=(i-1)*dx;
%popunjavanje indeksa i vrijednosti matrice A i vektora b razliitih od 0
if( abs(xi-Lx)<0.000001 && yi~=0 && abs(yi-Ly)>0.000001) %postavljanje uvjeta desni rub (Neumann)
Matrica_A_i(s)=kk;
Matrica_A_j(s)=kk;
Matrica_A_v(s)=1;
s=s+1;
Matrica_A_i(s)=kk;
Matrica_A_j(s)=kk-1;
Matrica_A_v(s)=-1;
s=s+1;
else if(xi==0 && yi~=0 && abs(yi-Ly)>0.000001) %postavljanje uvjeta lijevi rub (Neumann)
Matrica_A_i(s)=kk;
Matrica_A_j(s)=kk;
Matrica_A_v(s)=1;
s=s+1;
Matrica_A_i(s)=kk;
Matrica_A_j(s)=kk+1;
Matrica_A_v(s)=-1;
s=s+1;
else if(abs(yi-Ly)<0.000001) %postavljanje uvjeta gornji rub (Dirchlet)
Matrica_A_i(s)=kk;
Matrica_A_j(s)=kk;
Matrica_A_v(s)=1;
b_i(b1)=kk;
b_v(b1)=Ta;
s=s+1;
b1=b1+1;
else if(yi==0) %postavljanje uvjeta donji rub (Neumann)
Matrica_A_i(s)=kk;
Matrica_A_j(s)=kk;
Matrica_A_v(s)=1;
s=s+1;
Matrica_A_i(s)=kk;
Matrica_A_j(s)=kk+nx;
Matrica_A_v(s)=-1;
s=s+1;
else if(((xi-sx)^2+(yi-sy)^2)<=r^2 || abs(((xi-sx)^2+(yi-sy)^2)-r^2)<0.000001) %provjera ako je toka unutar kruga
izraun specifinih toplinskih vodljivosti u polovinim tokama
x1=xi+dx/2;%x koordinata toke za odreivanje prve specfine toplinske vodljivosti
y1=yi;%y koordinata toke za odreivanje prve specifine toplinske vodljivosti
if (((x1-sx)^2+(y1-sy)^2)<=r^2 || abs(((x1-sx)^2+(y1-sy)^2)-r^2)<0.000001) %provjera da li je toka x1 y1 unutar kruga
l1=lambda1;%specifina toplinska vodljivost u i+1/2,j:
else
l1=lambda2;%specifina toplinska vodljivost u i+1/2,j:
end
x2=xi-dx/2;%x koordinata toke za odreivanje druge specfine toplinske vodljivosti
y2=yi;%y koordinata toke za odreivanje druge specifine toplinske vodljivosti
if (((x2-sx)^2+(y2-sy)^2)<=r^2 || abs(((x2-sx)^2+(y2-sy)^2)-r^2)<0.000001) %provjera da li je toka x2 y2 unutar kruga
l2=lambda1;%specifina toplinska vodljivost u i-1/2,j:
else
l2=lambda2;%specifina toplinska vodljivost u i-1/2,j:
end
x3=xi;%x koordinata toke za odreivanje tree specfine toplinske vodljivosti
y3=yi+dy/2;%y koordinata toke za odreivanje tree specifine toplinske vodljivosti
if (((x3-sx)^2+(y3-sy)^2)<=r^2 || abs(((x3-sx)^2+(y3-sy)^2)-r^2)<0.000001) %provjera da li je toka x3 y3 unutar kruga
l3=lambda1;%specifina toplinska vodljivost u i,j+1/2:
else
l3=lambda2;%specifina toplinska vodljivost u i,j+1/2:
end
x4=xi;%x koordinata toke za odreivanje etvrte specfine toplinske vodljivosti
y4=yi-dy/2;%y koordinata toke za odreivanje etvrte specifine toplinske vodljivosti
if (((x4-sx)^2+(y4-sy)^2)<=r^2 || abs(((x4-sx)^2+(y4-sy)^2)-r^2)<0.000001) %provjera da li je toka x4 y4 unutar kruga
l4=lambda1;%specifina toplinska vodljivost u i,j-1/2:
else
l4=lambda2;%specifina toplinska vodljivost u i,j-1/2:
end
Matrica_A_i(s)=kk;
Matrica_A_j(s)=kk;
Matrica_A_v(s)=-dy*dy*(l1+l2)-dx*dx*(l3+l4)+dx*dx*dy*dy*A2;
s=s+1;
Matrica_A_i(s)=kk;
Matrica_A_j(s)=kk+1;
Matrica_A_v(s)=dy*dy*l1;
s=s+1;
Matrica_A_i(s)=kk;
Matrica_A_j(s)=kk-1;

17
Matrica_A_v(s)=dy*dy*l2;
s=s+1;
Matrica_A_i(s)=kk;
Matrica_A_j(s)=kk-nx;
Matrica_A_v(s)=dx*dx*l4;
s=s+1;
Matrica_A_i(s)=kk;
Matrica_A_j(s)=kk+nx;
Matrica_A_v(s)=dx*dx*l3;
s=s+1;
b_i(b1)=kk;
b_v(b1)=-A1*dx*dx*dy*dy;
b1=b1+1;
else %ostatak podruja
%izraun specifinih toplinskih vodljivosti u polovinim tokama
x1=xi+dx/2;%x koordinata toke za odreivanje prve specfine toplinske vodljivosti
y1=yi;%y koordinata toke za odreivanje prve specifine toplinske vodljivosti
if (((x1-sx)^2+(y1-sy)^2)<=r^2 || abs(((x1-sx)^2+(y1-sy)^2)-r^2)<0.000001) %provjera da li je toka x1 y1 unutar kruga
l1=lambda1;%specifina toplinska vodljivost u i+1/2,j:
else
l1=lambda2;%specifina toplinska vodljivost u i+1/2,j:
end
x2=xi-dx/2;%x koordinata toke za odreivanje druge specfine toplinske vodljivosti
y2=yi;%y koordinata toke za odreivanje druge specifine toplinske vodljivosti
if (((x2-sx)^2+(y2-sy)^2)<=r^2 || abs(((x2-sx)^2+(y2-sy)^2)-r^2)<0.000001) %provjera da li je toka x2 y2 unutar kruga
l2=lambda1;%specifina toplinska vodljivost u i-1/2,j:
else
l2=lambda2;%specifina toplinska vodljivost u i-1/2,j:
end
x3=xi;%x koordinata toke za odreivanje tree specfine toplinske vodljivosti
y3=yi+dy/2;%y koordinata toke za odreivanje tree specifine toplinske vodljivosti
if (((x3-sx)^2+(y3-sy)^2)<=r^2 || abs(((x3-sx)^2+(y3-sy)^2)-r^2)<0.000001) %provjera da li je toka x3 y3 unutar kruga
l3=lambda1;%specifina toplinska vodljivost u i,j+1/2:
else
l3=lambda2;%specifina toplinska vodljivost u i,j+1/2:
end
x4=xi;%x koordinata toke za odreivanje etvrte specfine toplinske vodljivosti
y4=yi-dy/2;%y koordinata toke za odreivanje etvrte specifine toplinske vodljivosti
if (((x4-sx)^2+(y4-sy)^2)<=r^2 || abs(((x4-sx)^2+(y4-sy)^2)-r^2)<0.000001) %provjera da li je toka x2 y2 unutar kruga
l4=lambda1;%specifina toplinska vodljivost u i,j-1/2:
else
l4=lambda2;%specifina toplinska vodljivost u i,j-1/2:
end
Matrica_A_i(s)=kk;
Matrica_A_j(s)=kk;
Matrica_A_v(s)=-dy*dy*(l1+l2)-dx*dx*(l3+l4);
s=s+1;
Matrica_A_i(s)=kk;
Matrica_A_j(s)=kk+1;
Matrica_A_v(s)=dy*dy*l1;
s=s+1;
Matrica_A_i(s)=kk;
Matrica_A_j(s)=kk-1;
Matrica_A_v(s)=dy*dy*l2;
s=s+1;
Matrica_A_i(s)=kk;
Matrica_A_j(s)=kk-nx;
Matrica_A_v(s)=dx*dx*l4;
s=s+1;
Matrica_A_i(s)=kk;
Matrica_A_j(s)=kk+nx;
Matrica_A_v(s)=dx*dx*l3;
s=s+1;

end
end
end
end
end
%pomono za izraun koordinata
if(i==nx && j~=ny)
xi=0;
yi=yi+dy;
end
kk=kk+1;
end
end

18
7) Definiranje matrice koeficijenata i vektora desne strane kao rijetke matrice
Na temelju prethodno odreenih i spremljenih pozicija i vrijednosti elemenata matrice
koeficijenata i vektora desne strane razliitih od 0 vri se njihovo definiranje u Matlabu kao
rijetkih matrica.
Isjeak Matlab skripte kojom se vri definiranje matrice koeficijenata i vektora desne strane
kao rijetkih matrica:
%definiranje matrice koeficijenata i vektora desne strane kao rijetke matrice
A=sparse(Matrica_A_i,Matrica_A_j,Matrica_A_v);
b=sparse(b_i,b_j,b_v);

8) Rjeavanje linearnog sustava jednadbi


Nakon definiranja matrica koeficijenata i vektora desne strane vri se rjeavanje dobivenog
sustava linearnih jednadbi, a time i dobivanje vrijednosti temperatura u razmatranim tokama
diskretizacije problema.
Isjeak Matlab skripte kojom se dobiva rjeenje:
%dobivanje rjeenja
T=A\b;

9) Iscrtavanje rezultata
Radi iscrtavanja rezultata prvo se definira mrea po x-osi i y-osi na podruju od 0-L x i od 0-Ly s
koracima dx, dy. Potom se dobiveni rezultati temperature rasporede u tom podruju te konano
se iscrtaju.
Isjeak Matlab skripte kojom se vri iscrtavanje rezultata:
%iscrtavanje rezultata
[X Y]=meshgrid(0:dx:Lx,0:dy:Ly);
R=reshape(T,nx,ny);
hold on;
contourf(X,Y,R',20);

S time je zavren proces rjeavanja problema primjenom Matlab skripte. Prije prikazivanja
samih rezultata u slijedeem poglavlju prikazat e se kako je putem PDE toolbox u Matlabu
mogue rijeiti isti problem na znatno jednostavniji nain.

19
5. Rjeavanje postavljenog problema primjenom PDE toolbox-a

Matlab-ov PDE toolbox omoguuje rjeavanje parcijalnih diferencijalnih jednadbi razliitih


inenjerskih struka na veoma elegantan i jednostavan nain. Pri tome u rjeavanju parcijalnih
diferencijalnih jednadbi ne koristi metodu konanih razlika ve metodu konanih elemenata.
Samo definiranje problema u PDE toolbox-u zahtjeva izuzetno malo vremena pa je pomou
njega mogue vrlo brzo doi do traenog rjeenja. U ovome radu postavljanje modela u PDE
toolbox-u se koristi radi provjere tonosti isprogramirane Matlab skripte u poglavlju 4. i
usporedbe tonosti samih rezultata.
Za problem definiran u poglavlju 3. koritenje PDE toolbox-a obuhvaa slijedee korake:
1) Otvaranje PDE toolbox-a
PDE toolbox ukoliko je instaliran mogue je otvoriti ukucavanjem naredbe "pdetool" u
komandu liniju Matlaba.
2) Odreivanje inenjerskog podruja razmatranog problema
PDE toolbox moe rjeavati parcijalne diferencijalne jednadbe iz razliitih inenjerskih
podruja. Odabir inenjerskog podruja odreuje mogunosti odabira oblika parcijalne
diferencijalne jednadbe koju je mogue rjeavati. Stoga je potrebno odrediti kojem
inenjerskom podruju pripada razmatrani problem. U sluaju razmatranog problema prema
poglavlju 3. on se nalazi u podruju "Heat transfer", a odabir se vri prema slici 3.

Slika 3. Odabir inenjerskog podruja rjeavanog problema


3) Podeavanje prikaza

20
Prikaz se podeava klikom na "Options" pa "Axes Limits" te se potom unese vrijednost prikaza
u x i y smjeru. Radi primjera pretpostaviti e se da se eli rijeiti problem s L x=2 i Ly=2 pa e se
prikaz postaviti od 0 do 3 u x i y smjeru prema slici 4.

Slika 4. Podeavanje prikaza


4) Definiranje geometrije
PDE toolbox ima predvieno nekoliko geometrijskih likova koje je lako ubaciti u domenu
rjeavanja to su elipsa (krug), pravokutnik te poligon. Naravno mogue je dobiti i sloenije
likove njihovom kombinacijom.
U konkretnom sluaju neka se pretpostavi da imamo problem prema poglavlju 3. u kojem
pravokutnik ima dimenzije Lx=2 i Ly=2 te da je njegov donji lijevi rub centriran u ishoditu.
Tada bi se u PDE toolbox-u odabrao pravokutnik i u prozoru ukucale vrijednosti 0, 0, 2, 2
prema slici 5.

Slika 5. Definiranje pravokutnika Lx=Ly=2

21
Slijedei korak je definiranje kruga. Za kako prethodno definirani pravokutnik krug je prema
poglavlju 3 centiran u 1,1 i uzeti e se da on ima radijus od 0,5. U PDE toolbox-u odabrala bi
se elipsa te u prozoru ukucale vrijednosti 1, 1, 0,5, 0,5 prema slici 6.

Slika 6. Definiranje kruga s centorom u 1,1 i radijusom od 0,5


Time je u PDE toolbox-u definirana geometrija razmatranog problema.
5) Diskretizacija problema
Diskretizacija problema odnosno definiranje mree za metodu konanih elementa vri se
pritiskom na "Mesh" pa "Mesh mode" pa "Initialize mesh" te jednom ili vie puta "Refine
mesh" odnosno "Jiggle mesh". Generirana mrea za razmatrani problem prikazana je na slici 7.

S
Slika 7. Mrea stvorena u diskretizaciji problema
6) Definiranje graninih uvjeta
Granini uvjeti definiraju se pritiskom na "Boundary" pa " Boundary mode" zatim se klikne na
granicu za koju se eli definirati granini uvjet (u razmatranom sluaju stranice pravokutnika)

22
te se nakon klika na stranicu pojavi prozor u kojem se biraju Neumann-ovi ili Dirichlet-ovi
granini uvjeti.
Primjerice ako za gornju stranicu pravokutnika se postavi Dirichlet-ov granini uvjet T=T a=293
tada je u PDE toolbox-u potrebno odabrati Dirchlet i ukucati 1 i 293 prema slici 8. Za preostale
tri stranice potrebno je odabrati Neumann i ukucati 0 i 0.

Slika 8. Postavljanje Dirchlet-ovog graninog uvjeta y=Ly

7) Pridruivanje parcijalne diferencijalne jednadbe podrujima


Svakom definiranom geometrijskom liku u PDE-toolbox-u mogue je pridruiti vlastitu
parcijalnu diferencijalnu jednadbu. Pri tome mogunosti odabira oblika parcijalne
diferencijalne jednadbe odreene su prema prethodno odabranom podruju primjene ("Heat
Transfer"). Postavljanje diferencijalnih jednadbe u pojedinim podrujima vri se klikom na
"PDE", "PDE mode" pa "PDE", "Show subdomain labels" (u konkretnom sluaju pojaviti e se
1 i 2) te konano se klikne dvaput na oznaena podruja 1 i 2 radi specificiranja jednadbe.
Primjerice ako je za podruje kruga zadano da je A1=500, A2=0,2, 1=400 tada bi se nakon to
se dvaput klikne na krug odabrao tip parcijalne diferencijalne jednadbe "Elliptic" i ukucale
konstante 400, 500, -0,2, 0 prema slici 9. S druge strane ako je za ostalo podruje zadano
2=0,55 ukucao bi se samo 0,55 prema slici 10.

23
Slika 9. Postavljanje jednadbe unutar kruga

Slika 10. Postavljanje jednadbe u ostalom podruju


8) Iscrtavanje rezultata
Rjeenje jednadbe dobiva se klikom na "Solve" pa "Solve PDE".

Time je rijeen problem definiran poglavljem 3. putem PDE toolbox-a. Neki rezultati dati e se
u slijedeem poglavlju te usporediti s rezultatima koje se dobivaju primjenom Matlab skripte.

24
6. Usporedba rezultata odreenih putem Matlab skripte i toolbox-a

Kao bazni sluaj uzeti e se model s ulaznim parametrima: Lx=Ly=2, r=0,5, A1=500, A2=0,2,
1=400, 2=0,55, Ta=293.
Prikaz raspodjele rezultata temperature putem Matlab skripte te PDE toolbox-a u obliku
kontura za bazni sluaj prikazan je na slici 11. Iz priloene slike 11. se vidi slinost samih
rezultata.

Slika 11. Raspodjela temperatura bazni sluaj lijevo Matlab skripta, desno
PDE toolbox (20 kontura)
Ukoliko se u odnosu na bazni sluaj promijeni 1 s 400 na 100 dobiva se prikaz prema slici 12.

Slika 12 Raspodjela temperatura bazni sluaj s izmjenom 1=100 lijevo Matlab skripta, desno
PDE toolbox (20 kontura)
Ukoliko se u odnosu na bazni sluaj promijeni 2 s 0,55 na 1 dobiva se prikaz prema slici 13.

25
Slika 13. Raspodjela temperatura bazni sluaj s izmjenom 2=1 lijevo Matlab skripta, desno
PDE toolbox (20 kontura)

Ukoliko se u odnosu na bazni sluaj promijeni A1=2000 dobiva se prikaz prema slici 14.

Slika 14. Raspodjela temperatura bazni sluaj s izmjenom A1=2000 lijevo Matlab skripta,
desno PDE toolbox (20 kontura)
Ukoliko se u odnosu na bazni sluaj promijeni A2=100 dobiva se prikaz prema slici 15.

Iz priloenog razmatranje mogue je zakljuiti da Matlab skripta daje veoma sline rezultate
kao PDE Toolbox za razmatrani problem. Od utjecaja kao najvei se moe zakljuiti da je izvor
topline koji se nalazi u krugu (A1 i A2) te specifina vodljivost prostora oko kruga 2. S druge
strane specifina toplinska vodljivost unutar kruga veoma malo utjee na distribuciju
temperature. Za dobivanje rezultata u simulacijama Matlab skriptom koristio se nx=ny=1000, a
putem PDE toolbox-a mrea se diskretizirala klasino koritenjem ugraenih opcija.

26
Slika 15. Raspodjela temperatura bazni sluaj s izmjenom A2=100 lijevo Matlab
skripta, desno PDE toolbox (20 kontura)

27
7. Zakljuak

Kroz rad je sustavno prikazana metoda konanih razlika poevi od teoretskog aspekta pa sve
do njene primjene na Poisson-ovoj jednadbi provoenja topline u nehomogenom podruju te u
stacionarnom stanju. Sam postupak rjeavanja konkretne diferencijalne jednadbe provoenja
topline primjenom metode konanih razlika ostvaren je razvojem vlastite Matlab skripte. Na
kraju rada tonost rezultata same skripte ispitana je usporedbom s rezultatima koje daje
ugraeni Matlab-ov toolbox te nisu uoena znaajnija odstupanja u rezultatima. S druge strane
proces rjeavanja primjenom PDE toolbox-a bio je znatno jednostavniji. Stoga, za brzo
rjeavanje klasinih inenjerskih probleme preporua se uporaba PDE toolbox-a.

28
Literatura

[1] Randall J. LeVeque:"Finite Difference Methods for Differential Equations", University of


Washington, 2005.
[2] Sarah Swats ki, Samuel Khuvis, and Matthias K. Gobb ert: "A Comparison of Solving the
Poisson Equation Using Several Numerical Methods in Matlab and Octave on the Cluster
maya", University of Maryland, 2014.
[3]D. M. Causon, C. G. Mingham:"Introductory Finite Difference Methods for PDEs",
dostupno na:
http://www.leka.lt/sites/default/files/dokumentai/introductory-finite-difference-methods-for-
pdes.pdf , 15.3.2015.

29
Prilog A

% Matlab skripta
%Rjeavanje nehomogene Poissonve jednadbe
%Definirane problemom u poglavlju 3
clear all;
close all;
clc;

%definiranje ulaznih parametara u model


Lx=2;%duina pravokutnika
Ly=2;%visina pravokutnika
sx=Lx/2;%sredite kruga x koordinata
sy=Ly/2;%sredite kruga y koordinata
r=0.5;%polumjer kruga (manji od Lx/2 i Ly/2)
A1=500;%konstanta 1 linearno zavisnog izvora
A2=100;%konstanta 2 linearno zavisnog izvora
lambda1=400;%specifina toplinska vodljivost u podruju 1
lambda2=0.55;%specifina toplinska vodljivost u podruju 2
Ta=293;%vrijednost temperature na gornjoj stranici pravokutnika

%diskretizacija prostora rjeavanja


nx=1000;%broj toaka x smjer
ny=1000;%broj toaka y smjer
dx=Lx/(nx-1);%razmak u smjeru x
dy=Ly/(ny-1);%razmak u smjeru y

%odreivanje broja elemenata matrice koeficijenata razliitog od 0


c=3*nx+4*(ny-2)+5*(nx*ny-(2*nx+2*(ny-2)));%broj elemenata A razliit od 0

%odreivanje broja elemenata vektora desne strane razliitog od 0


krug=0;%broja elemenata unutar kruga
xi=0;%poetna vrijednost koordinate x
yi=0;%poetna vrijednost koordinata y
for j=1:1:ny; %petlja po y tokama (stupcima)
for i=1:1:nx;%petlja po x tokama (redovima)
xi=(i-1)*dx;
if (((xi-sx)^2+(yi-sy)^2)<=r^2 || abs(((xi-sx)^2+(yi-sy)^2)-r^2)<0.000001) %provjera da li je unutar kruga
krug=krug+1;%uveanje brojaa ukoliko je toka u krugu
end
if(i==ny && j~=ny)%logika petlja radi praenja pozicije u koordinatama x,y
xi=0;
yi=yi+dy;
end
end
end
c1=krug+nx;%broj elemenata vektora desne strane razliitog od 0

%definiranje pomonih varijabli


xi=0;%poetna vrijednost koordinate x
yi=0;%poetna vrijednost koordinata y
kk=1;%broja toaka
Matrica_A_i=zeros(c,1);%definiranje vektora za spremanje indeksa i matrice koeficijenata A razliitog od 0
Matrica_A_j=zeros(c,1);%definiranje vektora za spremanje indeksa j matrice koeficijenata A razliitog od 0
Matrica_A_v=zeros(c,1);%spremanje vrijednosti elementa ij matrice koeficijenata razliitog od 0
b_i=zeros(c1,1);%definiranje vektora za spremanje indeksa i u kojoj je vektor desne strane razliit od 0
b_j=ones(c1,1);%definiranje vektora za spremanje indeksa j u kojoj je vektor desne strane razliit od 0
b_v=zeros(c1,1);%definiranje vektora za spremanje vrijednosti vektora desne strane razliitog od 0
s=1;%broja elemenata matrice koeficijenata razliit od 0
b1=1;%broja za spremanje elementa vektora desne strane razliitog od 0

%odreivanje elemenata matrice A i vektora desne strane razliitih od 0


for j=1:1:ny; %petlja po stupcima(y-lonu)
for i=1:1:nx;%petlja po redivima (x-u)
%izraun koordinate x
xi=(i-1)*dx;
%popunjavanje indeksa i vrijednosti matrice A i vektora b razliitih od 0
if( abs(xi-Lx)<0.000001 && yi~=0 && abs(yi-Ly)>0.000001) %postavljanje uvjeta desni rub (Neumann)
Matrica_A_i(s)=kk;
Matrica_A_j(s)=kk;
Matrica_A_v(s)=1;
s=s+1;
Matrica_A_i(s)=kk;
Matrica_A_j(s)=kk-1;
Matrica_A_v(s)=-1;

30
s=s+1;
else if(xi==0 && yi~=0 && abs(yi-Ly)>0.000001) %postavljanje uvjeta lijevi rub (Neumann)
Matrica_A_i(s)=kk;
Matrica_A_j(s)=kk;
Matrica_A_v(s)=1;
s=s+1;
Matrica_A_i(s)=kk;
Matrica_A_j(s)=kk+1;
Matrica_A_v(s)=-1;
s=s+1;
else if(abs(yi-Ly)<0.000001) %postavljanje uvjeta gornji rub (Dirchlet)
Matrica_A_i(s)=kk;
Matrica_A_j(s)=kk;
Matrica_A_v(s)=1;
b_i(b1)=kk;
b_v(b1)=Ta;
s=s+1;
b1=b1+1;
else if(yi==0) %postavljanje uvjeta donji rub (Neumann)
Matrica_A_i(s)=kk;
Matrica_A_j(s)=kk;
Matrica_A_v(s)=1;
s=s+1;
Matrica_A_i(s)=kk;
Matrica_A_j(s)=kk+nx;
Matrica_A_v(s)=-1;
s=s+1;
else if(((xi-sx)^2+(yi-sy)^2)<=r^2 || abs(((xi-sx)^2+(yi-sy)^2)-r^2)<0.000001) %provjera ako je toka unutar kruga

%izraun specifinih toplinskih vodljivosti u polovinim tokama


x1=xi+dx/2;%x koordinata toke za odreivanje prve specfine toplinske vodljivosti
y1=yi;%y koordinata toke za odreivanje prve specifine toplinske vodljivosti
if (((x1-sx)^2+(y1-sy)^2)<=r^2 || abs(((x1-sx)^2+(y1-sy)^2)-r^2)<0.000001) %provjera da li je toka x1 y1 unutar kruga
l1=lambda1;%specifina toplinska vodljivost u i+1/2,j:
else
l1=lambda2;%specifina toplinska vodljivost u i+1/2,j:
end
x2=xi-dx/2;%x koordinata toke za odreivanje druge specfine toplinske vodljivosti
y2=yi;%y koordinata toke za odreivanje druge specifine toplinske vodljivosti
if (((x2-sx)^2+(y2-sy)^2)<=r^2 || abs(((x2-sx)^2+(y2-sy)^2)-r^2)<0.000001) %provjera da li je toka x2 y2 unutar kruga
l2=lambda1;%specifina toplinska vodljivost u i-1/2,j:
else
l2=lambda2;%specifina toplinska vodljivost u i-1/2,j:
end
x3=xi;%x koordinata toke za odreivanje tree specfine toplinske vodljivosti
y3=yi+dy/2;%y koordinata toke za odreivanje tree specifine toplinske vodljivosti
if (((x3-sx)^2+(y3-sy)^2)<=r^2 || abs(((x3-sx)^2+(y3-sy)^2)-r^2)<0.000001) %provjera da li je toka x3 y3 unutar kruga
l3=lambda1;%specifina toplinska vodljivost u i,j+1/2:
else
l3=lambda2;%specifina toplinska vodljivost u i,j+1/2:
end
x4=xi;%x koordinata toke za odreivanje etvrte specfine toplinske vodljivosti
y4=yi-dy/2;%y koordinata toke za odreivanje etvrte specifine toplinske vodljivosti
if (((x4-sx)^2+(y4-sy)^2)<=r^2 || abs(((x4-sx)^2+(y4-sy)^2)-r^2)<0.000001) %provjera da li je toka x4 y4 unutar kruga
l4=lambda1;%specifina toplinska vodljivost u i,j-1/2:
else
l4=lambda2;%specifina toplinska vodljivost u i,j-1/2:
end
Matrica_A_i(s)=kk;
Matrica_A_j(s)=kk;
Matrica_A_v(s)=-dy*dy*(l1+l2)-dx*dx*(l3+l4)+dx*dx*dy*dy*A2;
s=s+1;
Matrica_A_i(s)=kk;
Matrica_A_j(s)=kk+1;
Matrica_A_v(s)=dy*dy*l1;
s=s+1;
Matrica_A_i(s)=kk;
Matrica_A_j(s)=kk-1;
Matrica_A_v(s)=dy*dy*l2;
s=s+1;
Matrica_A_i(s)=kk;
Matrica_A_j(s)=kk-nx;
Matrica_A_v(s)=dx*dx*l4;
s=s+1;
Matrica_A_i(s)=kk;
Matrica_A_j(s)=kk+nx;
Matrica_A_v(s)=dx*dx*l3;
s=s+1;
b_i(b1)=kk;
b_v(b1)=-A1*dx*dx*dy*dy;
b1=b1+1;
else
%izraun specifinih toplinskih vodljivosti u polovinim tokama
x1=xi+dx/2;%x koordinata toke za odreivanje prve specfine toplinske vodljivosti
y1=yi;%y koordinata toke za odreivanje prve specifine toplinske vodljivosti
if (((x1-sx)^2+(y1-sy)^2)<=r^2 || abs(((x1-sx)^2+(y1-sy)^2)-r^2)<0.000001) %provjera da li je toka x1 y1 unutar kruga

31
l1=lambda1;%specifina toplinska vodljivost u i+1/2,j:
else
l1=lambda2;%specifina toplinska vodljivost u i+1/2,j:
end
x2=xi-dx/2;%x koordinata toke za odreivanje druge specfine toplinske vodljivosti
y2=yi;%y koordinata toke za odreivanje druge specifine toplinske vodljivosti
if (((x2-sx)^2+(y2-sy)^2)<=r^2 || abs(((x2-sx)^2+(y2-sy)^2)-r^2)<0.000001) %provjera da li je toka x2 y2 unutar kruga
l2=lambda1;%specifina toplinska vodljivost u i-1/2,j:
else
l2=lambda2;%specifina toplinska vodljivost u i-1/2,j:
end
x3=xi;%x koordinata toke za odreivanje tree specfine toplinske vodljivosti
y3=yi+dy/2;%y koordinata toke za odreivanje tree specifine toplinske vodljivosti
if (((x3-sx)^2+(y3-sy)^2)<=r^2 || abs(((x3-sx)^2+(y3-sy)^2)-r^2)<0.000001) %provjera da li je toka x3 y3 unutar kruga
l3=lambda1;%specifina toplinska vodljivost u i,j+1/2:
else
l3=lambda2;%specifina toplinska vodljivost u i,j+1/2:
end
x4=xi;%x koordinata toke za odreivanje etvrte specfine toplinske vodljivosti
y4=yi-dy/2;%y koordinata toke za odreivanje etvrte specifine toplinske vodljivosti
if (((x4-sx)^2+(y4-sy)^2)<=r^2 || abs(((x4-sx)^2+(y4-sy)^2)-r^2)<0.000001) %provjera da li je toka x2 y2 unutar kruga
l4=lambda1;%specifina toplinska vodljivost u i,j-1/2:
else
l4=lambda2;%specifina toplinska vodljivost u i,j-1/2:
end
Matrica_A_i(s)=kk;
Matrica_A_j(s)=kk;
Matrica_A_v(s)=-dy*dy*(l1+l2)-dx*dx*(l3+l4);
s=s+1;
Matrica_A_i(s)=kk;
Matrica_A_j(s)=kk+1;
Matrica_A_v(s)=dy*dy*l1;
s=s+1;
Matrica_A_i(s)=kk;
Matrica_A_j(s)=kk-1;
Matrica_A_v(s)=dy*dy*l2;
s=s+1;
Matrica_A_i(s)=kk;
Matrica_A_j(s)=kk-nx;
Matrica_A_v(s)=dx*dx*l4;
s=s+1;
Matrica_A_i(s)=kk;
Matrica_A_j(s)=kk+nx;
Matrica_A_v(s)=dx*dx*l3;
s=s+1;

end
end
end
end
end
%pomono za izraun koordinata
if(i==nx && j~=ny)
xi=0;
yi=yi+dy;
end
kk=kk+1;
end
end

%definiranje matrice koeficijenata i vektora desne strane kao rijetke matrice


A=sparse(Matrica_A_i,Matrica_A_j,Matrica_A_v);
b=sparse(b_i,b_j,b_v);

%dobivanje rjeenja
T=A\b;

%iscrtavanje rezultata
[X Y]=meshgrid(0:dx:Lx,0:dy:Ly);
R=reshape(T,nx,ny);
shading interp;
hold on;
contourf(X,Y,R',20);

32

You might also like