Professional Documents
Culture Documents
SADRAJ:
1. UVOD................................................................................................................................4
1.1. POVIJEST MODELIRANJA FLUIDA........................................................................6
1.2. FLUID OPENITO .....................................................................................................8
2. MATEMATIKI MODELI..............................................................................................10
2.1. POJEDNOSTAVLJENI MATEMATIKI MODELI.................................................12
2.1.1. NESTLAIVI TOK ............................................................................................13
2.1.2. NEVISKOZAN (EULER-OV) TOK ...................................................................14
3.METODE RJEAVANJA JEDNADBI ...........................................................................15
3.1. TO JE CFD? ............................................................................................................15
3.2. NUMERIKE METODE RJEAVANJA .................................................................16
3.3. KOMPONENTE NUMERIKIH METODA.............................................................17
3.4. DISKRETIZACIJA PROSTORA ..............................................................................19
3.4.1. METODA KONANIH RAZLIKA....................................................................19
3.4.2. METODA KONANIH VOLUMENA...............................................................26
3.4.3. METODA KONANIH ELEMENATA .............................................................30
3.5. RJEAVANJE SUSTAVA LINEARNIH JEDNADBI ............................................31
3.5.1. DIREKTNE METODE .......................................................................................31
3.5.1.1. GAUSSOVA ELIMINACIJA ..........................................................................32
3.5.1.2. LU DEKOMPOZICIJA....................................................................................33
3.5.2. ITERATIVNE METODE....................................................................................34
3.5.2.1. TEMELJNI KONCEPT....................................................................................34
3.5.2.2. KONVERGENCIJA.........................................................................................36
3.5.2.3. NEKE OSNOVNE METODE ..........................................................................37
3.6. METODE ZA NESTABILNE PROBLEME - DISKRETIZACIJA VREMENA ........39
3.6.1. METODE MARIRANJA KROZ VRIJEME .....................................................40
3.6.1.1. DVORAZINSKE METODE ............................................................................40
3.6.1.2. PREDIKTOR-KOREKTOR METODE............................................................43
3.6.1.3. METODE KOJE KORISTE VIE TOAKA..................................................44
3.6.1.4. RUNGE-KUTTA METODE....................................................................................46
3.7. SPECIJALNA METODA SEMI-LAGRANGE..........................................................48
1. UVOD
Modeliranje prirodnih fenomena (kao to su dim, vatra, oblaci itd.) je jedan od
najzahtjevnijih i najpopularnijih izazova u raunalnoj grafici. Prirodni fenomeni su popularni
zbog svojeg zanimljivog izgleda i unato tome to nas svakodnevno okruuju i dalje privlae
pozornost i divljenje. Zahtjevnost njihovog modeliranja proizlazi iz njihove kompleksnosti i
sloene dinamike koju je teko matematiki opisati. Ovaj rad se fokusira na jedan od tih
prirodnih fenomena a to je dim, ili openitije na plinovite fluide.
elja ili potreba za modeliranjem plinovitih fluida na raunalu svodi se na dva
osnovna podruja primjene: zabava i istraivanja. S podrujem zabave misli se na specijalne
efekte u filmovima i interaktivnim igrama (Slika 1.1). Danas je teko zamisliti film koji ne
koristi barem jedan simulator fluida. Danas koriteni simulatori su doli do tolike razine
realnosti da je obinom laiku teko primijetiti da se radi o raunalnoj simulaciji. Samo
desetak godina unazad se biljei velik napredak podrujima animacije fluida, to je vidljivo
po filmovima iz tog podruja. Isto tako se biljei procvat animiranog filma, koji se u dananje
vrijeme potpuno svodi na raunalnu animaciju.
Postoji i druga "korisna" primjena simulatora fluida. U industriji su potrebne razne
simulacije strojeva koji su u interakciji s fluidom. Za primjer se moe navesti industrija
automobila, gdje je naravno potrebno simulirati rad motora. U to ulaze razni fluidi, od vode,
plinova, do goriva. Svaki od tih simulatora mora biti izrazito toan.
U idealnom sluaju, dobar model dima na raunalu trebao bi biti jednostavan za
upotrebu i davati visoko realistine prikaze u stvarnom vremenu. Meutim, takve zahtjeve je
teko postii dananjim raunalnim resursima. Najee je potrebno raditi kompromise
izmeu tonosti i brzine simulacije. to je za koriteni simulator vanije proizlazi iz podruja
primjene. Ako je potreban visoko realistini prikaz kao na primjer u filmskoj industriji,
koristiti e se sporiji simulatori. Ako se radi o interaktivnim igrama koje se moraju odvijati u
stvarnom vremenu (engl. real-time) , tonost prikaza vie nee biti bitna. Bitno e biti samo
da je simulator to bri tj. da se vri to manje izrauna po jedinici vremena. Zadnji primjer je
simulacija plinova u industriji. U tom sluaju najvanija je tonost. Meutim bitno je i da taj
proces ne traje predugo te e za to podruje biti potrebna to bolja verzija simulatora.
Zbog sve veeg zanimanja za podruje raunalne simulacije fluida postoji podruje
koje se bavi samo tim problemima - raunalna dinamika fluida (engl. computational fluid
dynamics - CFD). To novo podruje posveeno je iskljuivo razvijanjem numerikih metoda
4
za raunanje dinamike fluida pomou raunala. Razvijanje tog podruja je tek poelo. Zasad
su postignuti razni modeli, meutim mnogi modeli pate ili od presporih algoritama ili od
prevelike numerike disipacije to je izazov za daljnje razvijanje novih, poboljanih modela.
U ovom radu opisana je dinamika plinovitih fluida zajedno s pozadinskim
matematikim modelima, te osnovne numerike metode koritene pri rjeavanju tih
matematikih modela. Poseban naglasak je na model temeljen na radovima Stama [2] i Stama,
Fedkiwa i Jensena [1] koji predstavlja visoko realistian model plinovitih fluida koji je
stabilan za svaki vremenski korak i moe se odvijati u stvarnom vremenu. Za taj model
postavljen je matematiki model i priloena metoda rjeavanja i implementacija algoritma u
programskom jeziku C++ sa grafikim standardom OpenGL.
a.
b.
c.
Slika 1.1. Primjena simulatora fluida na filmu Dan poslije sutra (a. i b.) i animiranom filmu Ledeno doba 2 (c.)
Obiljeja fluida su funkcije ostalih termodinamikih varijabli (npr. temperatura i tlaka) koje se
dobivaju laboratorijskim mjerenjima.
Brzina toka fluida utjee na njegova svojstva na razne naine. Pri dovoljno malim
brzinama, inercija fluida moe biti ignorirana i tada imamo "puzajui tok". Kako se brzina
poveava, iznos inercije postaje relevantan i putanja toka je glatka trajektorija za svaku
esticu fluida. Za tok se tada kae da je laminaran. Daljnje poveanje brzine moe voditi do
nestabilnosti, koja dovodi do sve vie nepredvidivog oblika toka koji se naziva turbulentnim.
Proces prelaenja fluida izmeu ta dva oblika je posebno vano podruje samo za sebe.
Postoji jo jedan parametar koji utjee na ponaanje fluida. Omjer brzine toka i brzine
zvuka u sredstvu (Mach broj-dodatak A.2) odreuje da li izmjena kinetike energije gibanja i
unutarnji stupnjevi slobode dolaze do izraaja. Za male vrijednosti Mach broja, Ma < 0.3, tok
se moe smatrati nestlaivim, inae stlaivim. Ako je vrijednost Ma <1, brzina toka fluida je
ispod razine zvuka (engl. subsonics), ako je vrijednost Ma>1, tada je brzina fluida iznad
zvuka (engl. supersonic) i mogui su udarni valovi. I konano kada je Ma>5 tok moe
proizvesti dovoljno velike temperature da promjeni kemijsku prirodu fluida (engl. hypersonic
fluids). Ove razlike utjeu na matematiku prirodu problema pa tako i na metodu rjeavanja
problema.
Jedno od bitnih obiljeja fluida je viskoznost. Viskoznost je pojava unutarnjeg trenja u
fluidima. Najbolji nain da se opie to svojstvo je primjerom. Silu predstavlja uski kruti
predmet (npr. no) koji se pomie kroz fluid u istoj ravnini. Za razliku od krutih tijela, fluid
"proputa" predmet kroz sebe, ali uz odreenu koliinu otpora. Svaki fluid daje drugaiji
iznos otpora. Taj otpor fluida nazivamo viskoznost. Za mnoge modele viskoznost moe biti
zanemarena, tj. pretpostavlja se da joj je vrijednost jednaka nuli. U tom sluaju fluid se
opisuje kao ne viskozan. Pretpostavka o ne viskoznim fluidima u raunalnoj dinamici fluida je
esta. Treba naglasiti da su granini uvjeti razliiti za viskozne i ne viskozne fluide (jer je
utjecaj viskoznosti bitan samo u blizini prepreka).
Prouavanje dinamike fluida nije tako jednostavno jer je fluid rairen po prostoru, i
kada se giba (npr. zbog pomicanja granica oko fluida), sile su povezane s unutranjosti fluida
utjecajem fluida na samog sebe. Unato tome, temelj svih ponaanja fluida su empiriki
verificirani fiziki zakoni: zakon o ouvanju mase, zakon o ouvanju energija i linearnog
momenta, kombinirani za zakonima termodinamike.
2. MATEMATIKI MODELI
S matematikog gledita, prouavanje dinamike fluida se svodi na izraze koji
ukljuuju skalarna (masa, gustoa i tlak fluida) i vektorska polja (brzina toka fluida)
definirana na Euklidskom prostoru 3 , i njihove meusobne veze. S obzirom da su veze
meu njima preteno diferencijalne prirode, zadire se u polje matematike koje se naziva
vektorski raun (engl. vector calculus). Za bolje razumijevanje jednadbi toka fluida prvo e
se razjasniti neke osnovne matematike operacije i termini koriteni za izraun.
Prvo e se navesti vektorski analitiki diferencijalni operatori u desno orijentiranom
Kartezijskom koordinatnom sustavu sa bazom u 3 , (i, j, k) sa koordinatama (x, y, z), gdje
vrijedi
1= i = j = k .
(2.1)
i+
j+ k
x y
z
(2.2)
Hamiltonov operator se ponaa kao vektor i kao operator parcijalnog deriviranja u smjeru
baznih vektora. Taj operator djeluje na funkcije koje se nalaze iza (desno) njega i to na
skalarna polja, te na vektorska polja na dva naina.
GRADIJENT
i+
j+
k
x
y
z
(2.3)
10
A =
Ax Ay Az
+
+
x
y
z
(2.4)
A Ay Ax Az Ay Ax
A = z
j+
i +
k
z z
x x
y
y
(2.5)
( ) =
2 2 2
+
+
x 2 y 2 z 2
(2.6)
11
12
(2.7)
(2.8)
gdje su:
- kinematika viskoznost fluida,
- gustoa fluida i
Kao to se moe uoiti izraz za tok fluida se sastoji od dvije jednadbe. Jednadba
(2.7) je izvedenica zakona o ouvanju mase za nestlaive fluide. Iz jednadbe je vidljivo da je
divergencija vektora brzine toka jednaka nuli tj. koliina fluida (jedinica mase) koji ue u
neko odreeno podruje je jednaka koliini fluida koja izae iz tog podruja. Druga jednadba
(2.8) je malo kompleksnijeg oblika, ali je isto tako samo izvedenica zakona o ouvanju
momenta ili energije. Iz te jednadbe se moe oitati da je promjena brzine gibanja je jednaka
sumi etiriju izraza (redom s lijeva na desno): advekciji fluida, promjeni tlaka, difuziji i
vanjskim silama koji djeluju na promatrani segment fluida.
1. Izraz za advekciju (u )u predstavlja prijenos nekog svojstva fluida (u ovom sluaju
brzine) samo gibanjem mase. Poblie objanjeno, taj izraz osigurava da e se svaki
mali djeli toka ,"ubaen" u glavni tok, gibati u smjeru gradijenta vektora brzine.
13
2. Idui izraz je izraz za razliku tlaka koji predstavlja injenicu da se fluid uvijek giba iz
podruja vieg tlaka u podruje nieg.
3. Izraz za difuziju v 2 u , uz konstantni iznos viskoznosti, opisuje koliko se brzo poniti
razlika u brzinama unutar fluida koji okruuje zadanu toku. Uz vei iznos
viskoznosti, brzine se bre ponite.
4. Zadnji izraz je izraz za vanjsku silu. Ta sila moe biti bilo koji vanjski utjecaj. U nju
ubrajamo gravitacijsku silu, silu uzgona te bilo koje sile definirane od strane korisnika.
U ovom sluaju simulatora fluida, uz te dvije vrste sila, koristit e se i trei izraz koji
e predstavljati silu koja obnavlja vrtloenje dima.
Osim
pretpostavke
nestlaivosti
fluida,
mogue
je
uiniti
jo
jedno
(2.9)
15
jednadbi
podataka
16
Matematiki model je postavljanje jednadbi uz granine uvjete koji dobro opisuju zadani
problem. Taj korak je ve uinjen u poglavlju 2.1.2.
METODA DISKRETIZACIJE
Odabir ovisi o cilju i obliku toka i utjee na izbor metode diskretizacije i odabira tipa mree.
Najee koriten sustav je Kartezijski sustav.
NUMERIKA MREA
17
Pratei odabir tipa numerike mree, potrebno je i odabrati aproksimaciju koja e se koristiti u
diskretizacijskom procesu. U metodama konanih razlika moraju biti odabrane metode
aproksimacije derivacija u tokama mree. Za metode konanih volumena potrebno je
odabrati metodu aproksimacije povrinskih i volumnih integrala. I na kraju, za metodu
konanih elemenata potrebno je odabrati oblik funkcija (elemenata) i njihove teinske
funkcije. Postoje mnoge mogunosti odabira tih metoda. Pri odabiru se mora imati na umu
kompromis izmeu jednostavnosti, lakoj implementaciji, tonosti i raunarskoj efikasnosti.
METODA RJEAVANJA
Diskretizacija povlai velik sustav nelinearnih algebarskih jednadbi. Metoda rjeavanja ovisi
o postavljenom problemu. Za nestabilne sustave koritene su metode temeljene na onima koje
se koriste za probleme inicijalne vrijednosti za uobiajene diferencijalne jednadbe - metoda
napredovanja kroz vrijeme (engl. marching in time). Stabilni tokovi se obino rjeavaju
pseudo-kretanjem kroz vrijeme (engl. pseudo-time marching) ili ekvivalentnom iteracijskom
shemom.
KRITERIJI KONVERGENCIJE
18
ovih metoda postoje i druge metode koje se rijetko koriste i najee su ograniene na
specijalne sluajeve problema. Neke od tih metoda su sheme spektra, metode graninih
elemenata, celularni automati i druge.
Svaka od metoda daje isto rjeenje ako je mrea dovoljno fino podijeljena. Unato toj
injenici, neke metode su prikladnije za neke klase problema od ostalih i odabir najee ovisi
Slika 3.1. Primjer podjele prostora za metodu konanih razlika, vorovi se nalaze na sjecitima
19
2D prostor (i ,j), za 3D prostor (i, j, k). Na svakom voru mree aproksimira se polazna
diferencijalna jednadba tako da se parcijalne derivacije u jednadbi zamjene sa
aproksimacijskim izrazima u tekuem vornom mjestu. To rezultira jednom algebarskom
jednadbom po voru mree, u kojoj su nepoznanice vrijednosti varijabli tog i odreenog
broja susjednih vorova. Naravno, broj jednadbi i broj nepoznanica moraju biti jednaki. Na
graninim vorovima gdje su ponuene vrijednosti varijabli (Drichletovi uvjeti) jednadbe
nisu potrebne. Kada se koriste granini uvjeti koji sadre derivacije (Neumannovi uvjeti), oni
se moraju diskretizirati i pridruiti ostalim jednadbama u sustavu.
Za raunanje jednadbi u vorovima potrebne su nam aproksimacije derivacija.
Najee koritene metode za aproksimacije derivacija su aproksimacija pomou Taylorovog
razvoja u red i aproksimacija polinomom (engl. polinomical fitting) . Kada je potrebno, te
metode se takoer koriste za odreivanje vrijednosti varijabli na lokacijama koje su izvan
mrenih vorova ( interpolacija).
Najea aproksimacija derivacije u metodi konanih razlika temelji se na Taylorovom
razvoju u red. Sve aproksimacije biti e izvedene za komponentu brzine u smjeru x osi (u). Za
komponentu u y smjeru (v) izvod je analogan.
Na primjer, ako je ui,j oznaava x komponentu brzine u toki (i, j), tada brzina ui+1,j u
toki (i+1, j) se moe predstaviti Taylorovim razvojem u red oko toke (i, j):
2 u (x) 2 3u (x) 3
u
u i +1, j = ui , j + x + 2
+ 3
+ ...
x i , j
x i , j 2
x i , j 6
(3.1)
Navedena jednadba je matematiki egzaktan izraz za ui+1,j, ako je broj lanova beskonaan i
konvergira, te t 0. Iz toga slijedi:
(3.2)
(2)
ui +1, j ui , j
u
x
x i , j
(3.3)
20
Ostatak izraza (2), (engl. truncation error), predstavlja izraz koji se zanemaruje pri
aproksimaciji. U jednadbi (3.2), izraz najnieg reda u jednadbi za pogreku ukljuuje prvu
potenciju x. Iz toga slijedi da je izraz za konane razlike (3.3) prvog reda tonosti i toniji
zapis je:
ui +1, j ui , j
u
+ O(x)
=
x
x i , j
(3.4)
U gore navedenoj jednadbi O(x) je formalna matematika notacija koja predstavlja izraz
reda x. Zbog raunanja derivacije pomou idueg lana u nizu ui+1,j, tj. uzimanja podataka
koji su postavljeni desno od toke (i, j), ova metoda se naziva prva derivacija prvog reda s
korakom unaprijed (engl. first-order forward difference ). Nain dobivanja te aproksimacije
se moe opisati i grafiki (Slika 3.2).
Analogno tome, iz razvoja Taylorovog reda za element ui-1,j ( jednadba br. 3.5) moe se
izvesti i prva derivacija prvog reda s korakom unazad (engl. first-order backward (rearward)
difference):
2 u (x) 2 3u x) 3
u
u i 1, j = ui , j + (x) + 2
+ 3
+ ...
2
x i , j
x i , j
x i , j 6
(3.5)
u i , j ui 1, j
u
+ O ( x )
=
x
x i , j
(3.6)
21
u i+1, j ui 1, j
u
+ O (x) 2
=
2x
x i , j
(3.7)
2u
4 u (x) 4
u i +1, j + ui 1, j = 2u i , j + 2 (x) 2 + 4
+ ...
x i , j
x i , j 12
(3.8)
u
2u i , j + u i 1, j
2u
2 = i +1, j
+ O(x) 2
2
(x)
x i , j
(3.9)
Iz formule je vidljivo da je ovo centralni diferencijal drugog reda tonosti. Osim derivacija po
zasebnim komponentama potrebna nam je i mjeovita druga derivacija. Ona se jednostavno
dobiva deriviranjem Taylorovog reda (3.1) i (3.5) te njihovim oduzimanjem. Iz dobivenog
izraza, daljnjim sreivanjem lako je dobiti izraz koji predstavlja derivaciju po x i y
komponenti:
u
u
u
+u
2u
(3.10)
23
24
tonosti zahtijevaju i vie vremena za izraun po vremenskom koraku tj. takav algoritam je
sporiji.
Kao to je spomenuto, nakon diskretizacije prostora i operatora, dobiva se algebarska
jednadba za svaki vor mree. Time dobivamo potpuni sustav jednadbi. Ako je polazna
jednadba nelinearna ( kao to su Navier-Stokesove i Eulerove jednadbe), aproksimacije e
sadrati neke nelinearne elemente. Numerika metoda rjeavanja e tada zahtijevati dodatnu
linearizaciju.
Prednosti metode konanih razlika su jednostavnost i efektivnost na strukturnim
mreama. Uz to je posebno lako postii sheme vieg reda integracije. Nedostatak metode je da
se ne potuju zakoni ouvanja u sluaju da se ne vodi o tome rauna posebno. Osim toga, bitni
nedostatak je ogranienje na jednostavnu geometriju ako se radi o kompleksnim tokovima.
25
Slika 3.8. Metoda konanih volumena dijeli prostor na kontrolne volumene u ijim sreditima se nalaze vorovi
u kojima raunamo vrijednosti varijabli
26
.
Slika 3.9. Dva razliita pristupa u podjeli prostora na kontrolne volumene
27
fdS = fdS ,
(3.11)
k Sk
gdje je f komponenta konvektivnog ili difuzivnog vektora toka u smjeru normale na stranicu
elije. Zbog odravanja zakona o ouvanju, bitno je da se elije ne preklapaju, tj. da svaka
stranica elije je unikatna za svaku od dviju elija koje lee sa svake njezine strane.
Za raunanje povrinskog integrala potrebno je poznavati integrant f du cijele
povrine S. Ta informacija nije dostupna, osim u vorovima ( koji se nalaze u centrima elija)
te je potrebna aproksimacija koja se odvija u dva koraka:
Fe =
fdS = f S
e
f e Se
(3.12)
Se
Fe =
Sss
fdS
Se
( f ne + f se )
2
(3.13)
28
Fe =
Sss
fdS
Se
( f ne + 4 f e + f se )
6
(3.14)
29
Slika 3.11. Dva naina prikaza metode konanih elemenata, kao to je vidljivo na slikama elementi ne moraju
biti uniformni
30
(3.15)
matricu A, zbog malog broja ne-nul elemenata, nema smisla spremati kao dvodimenzionalno
polje. Svaka dijagonala sa ne-nul elementima se sprema u poseban red, te se tako tedi
memorijski prostor.
U nastavku biti e opisane neke od metoda za rjeavanje linearnih algebarskih sustava
koji nastaju diskretizacijom parcijalnih diferencijalih jednadbi.
A A A ... A
n1 n 2 n3 nn
(3.16)
Bit algoritma je tehnika eliminiranja A21, tj. zamjena vrijednosti tog elementa sa
nulom. To se dobiva mnoenjem prve jednadbe (prvi red matrice) sa A21/A11 i oduzimanjem
od druge jednadbe (drugi red matrice). Openito, za eliminiranje Ai1, prvi red matrice se
mnoi sa Ai1/A11 i oduzima od i-tog retka. Nakon to se eliminiraju svi elementi ispod
elementa A11, niti jedna jednadba od 2, 3, ....,n ne sadri varijablu 1 i tada te jednadbe ine
sustav od n-1 jednadbi za varijable 2, 3,...., n. Ista procedura se primjenjuje na tom
manjem sustavu jednadbi za sve elemente ispod A22.
Nakon to je proces gotov, izvorna matrica se svodi na gornju trokutastu:
0,0,0... A
nn
(3.17)
S obzirom da se izvorne vrijednosti matrice nee vie koristiti, efikasno je spremiti novo
dobivenu matricu na mjesto izvorne matrice. Ovaj dio algoritma se naziva eliminacija
unaprijed (engl. forward elimination) . Elementi desne strane jednadbe Qi
takoer se
n =
Qn
.
Ann
(3.18)
32
Qi
i=
A
ik
k =i +1
Aii
(3.19)
Desna strana jednadbe (3.19) je rjeiva jer sve nepoznanice koje se pojavljuju u sumi su ve
poznate u koracima ispred. Ovaj dio algoritma koji poinje trokutastom matricom i rauna
nepoznanice se zove supstitucija unazad ( engl. back substitution).
Nije teko pokazati da za velike brojeve nepoznanica n, broj operacija potreban za
rjeavanje sustava Gaussovom eliminacijom je proporcionalna sa n3/3. Zbog toga je Gaussova
eliminacija skupa za izraun, ali za potpune matrice je dobra kao i bilo koje druge metode.
Meutim Gaussova eliminacija se ne vektorizira ili paralelizira efikasno i zato se rijetko
koristi bez modifikacija u CFD problemima.
3.5.1.2. LU DEKOMPOZICIJA
Postoje brojne varijacije metoda Gaussove eliminacije. Veina nije interesantna u
ovim razmatranjima. Jedna od varijacija koja ima vrijednost u CFD metodama je LU
dekompozicija.
Kao to je mogue vidjeti u prethodnom poglavlju, u Gaussovoj eliminaciji,
eliminacija unaprijed reducira potpunu matricu u gornju trokutastu. Taj proces moe biti
izveden puno efikasnije mnoenjem matrice A sa donjom trokutastom matricom. Samo po
sebi to nije bitno, meutim s obzirom da je inverzna matrica donje trokutaste matrice takoer
donja trokutasta, rezultat toga je da bilo koja matrica A, sa nekim ogranienjima koja su ovdje
nebitna, moe se rastaviti na donju (L) i gornju (U) trokutastu matricu:
A = LU
(3.20)
33
(3.21)
34
(3.22)
n = n
Gdje je rjeenje kojem se konvergira, a ostatak:
(3.23)
A n = n
Bit iteracijske metode je svoenje ostatka na nulu; u procesu takoer se svede na nulu. Da bi
se pokazalo kako se to radi, uzima se u obzir iterativni postupak za linearni sustav. Tada se
moe zapisati:
M n +1 = N n + B
(3.24)
Oito pravilo koje se mora potivati je da rezultat kojem se konvergira zadovoljava jednadbu
(3.15). S obzirom da po definiciji pri konvergenciji n +1 = n = , mora vrijediti:
A =MN
B=Q
(3.25)
B = PQ
(3.26)
ili generalno:
PA = M N
(3.27)
35
3.5.2.2. KONVERGENCIJA
Kako je bilo navedeno, brza konvergencija iterativne metode je klju njezine
efektivnosti. U ovom odlomku e biti dana kratka analiza koja je korisna za razumijevanje to
je mjerilo konvergencije i kako je poboljati.
Za poetak potrebno je izvesti jednadbu koja opisuje ponaanje iteracijske pogreke.
Kree se od poetnog uvjeta za konvergenciju n +1 = n = , tako da rjeenje kojem se
konvergira zadovoljava jednadbu:
M = N + B
(3.28)
(3.29)
(3.30)
Kao jednostavni primjer uzet e se sustav koji koristi samo jednu jednadbu. Pretpostavi se
da se eli rijeiti:
ax = b
(3.31)
(3.32)
36
p +1 =
n p
(3.33)
Iz toga je vidljivo da se greka reducira brzo ako n/m je malo tj. ako je n mali, to znai da
Pn+1 =
QP AS Sn AW Wn AN Nn AE En
AP
(3.34)
Pn+1 =
QP AS Sn+1 AW Wn+1 AN Nn AE En
+ (1 ) Pn
AP
(3.35)
gdje predstavlja relaksacijski faktor, koji mora biti vei od 1 za ubrzanje, i n je broj
iteracija. Postoje teorije koje se bave odabirom relaksacijskog faktora za jednostavne
37
38
r
du r r
= F (u , t )
dt
(3.36)
(3.37)
39
(t 0 ) = 0 .
(3.38)
Glavni problem je nai rjeenje za neko kratko vrijeme t nakon inicijalne toke. To
rjeenje u vremenskom trenutku t1 = t0 + t, je inicijalno stanje za novi korak i rjeenje se
dalje nastavlja za trenutke t2 = t1 + t, t3 = t2 + t, ...
Najjednostavnije metode se mogu konstruirati integrirajui formulu (3.38) od
vremenskog trenutka tn do tn+1 = tn+ t:
t n +1
tn
d
dt = n+1 n =
dt
t n +1
f (t , (t ))dt
(3.39)
tn
40
Slika 3.12. Aproksimacija vremenskog integrala f(t) na intervalu t, s lijeva na desno: eksplicitna Eulerova
metoda, implicitna Eulerova metoda, trapezno pravilo i pravilo srednje toke
n+1 = n + f (t n , n )t
(3.40)
(3.41)
n+1 = n + f (t
n+
1 ,
n+
1
2
) t
(3.42)
to je poznato kao pravilo sredinje toke i moe se smatrati osnovom bitne metode za
rjeavanje parcijalnih diferencijalnih jednadbi -Leapfrogove metode.
I kao zadnja solucija, mogue je koristiti linearnu interpolaciju po pravcu izmeu
inicijalne i krajnje toke konstruirajui aproksimaciju:
n+1 = n +
1
f (t n , n ) + f (t n+1 , n+1 ) t
2
(3.43)
41
koja se naziva trapezoidno pravilo i takoer je osnova bitne metode za rjeavanje parcijalnih
diferencijalnih jednadbi - Crank-Nicolsonove metode.
Kolektivno, ove metode se nazivaju dvorazinske metode jer ukljuuju vrijednosti
nepoznanica iz dva vremenska trenutka (metode koje se temelje na pravilu sredinje toke se
mogu, ali ne moraju svrstavati u dvorazinske metode).
Iz navedenih jednadbi moe se primijetiti da sve metode, osim prve, zahtijevaju
vrijednost od (t) u nekom vremenskom trenutku razliitom od t=tn (to je inicijalna toka
integracijskog intervala u kojem je rjeenje poznato). Za takve metode nije mogue izraunati
desnu stranu izraza bez sljedee iteracije. Zbog toga, prva metoda pripada klasi eksplicitnih
metoda, dok ostale pripadaju implicitnim metodama.
Sve metode daju dobra rjeenja za mali t. Meutim, ponaanje metoda za vee
vremenske korake je bitno zbog toga to za probleme s varijabilnim vremenskim skalama
esto je cilj izraunati, sporo, dugorono ponaanje rjeenja i kratki vremenski koraci su samo
smetnja. Problemi sa velikim rasponom vremenskih koraka se nazivaju engl. stiff i oni su
najvea tekoa na koju se nailazi pri rjeavanju regularnih diferencijalnih jednadbi. Zbog
toga je od velike vanosti ispitati ponaanje odreene metode pri velikim vremenskim
koracima. To prerasta u pitanje stabilnosti metode.
Postoje mnoge definicije stabilnosti u literaturi. Ovdje e se koristiti gruba definicija
koja naziva metodu stabilnom ako ona dolazi do ogranienog rjeenja kada je rjeenje
temeljnih diferencijalnih jednadbi takoer ogranieno. Za eksplicitnu Eulerovu metodu
stabilnost zahtjeva zadovoljenje izraza:
1 + t
f (t , )
<1
(3.44)
f (t , )
<2
(3.45)
42
Sve ostale metode definirane do sada su bezuvjetno stabilne, tj. daju ogranieno rjeenje za
bilo koji vremenski korak ako f (t , ) / < 0. Unato toj injenici, implicitna Eulerova
metoda tei glatkim rjeenjima ak i kada je t jako velik dok trapezoidno pravilo daje
rjeenje koje oscilira sa laganim priguenjem.
Konano, potrebno je razmotriti i pitanje tonosti pojedinih metoda. Globalno
gledajui, teko je rei neto o tom problemu zbog velike razlike jednadbi kojima se moe
pristupiti navedenim metodama. Za jedan mali korak mogue je koristi Taylorov razvoj da bi
se pokazalo da eksplicitna Eulerova metoda, kreui od poznatog rjeenja za tn, daje rjeenje
za tn+ t sa grekom proporcionalnom sa (t)2.Meutim, s obzirom da broj koraka potreban
za raunanje nekog konanog vremena t = t0 + T je obrnuto proporcionalan t , i greka se
gomila pri svakom vremenskom koraku, greka e na kraju biti proporcionalna sa samim t.
Zbog toga je eksplicitna Eulerova metoda prvog reda tonosti. Implicitna Eulerova metoda je
takoer prvog reda tonosti, dok trapezoidno pravilo i pravilo sredinje toke imaju pogreke
proporcionalne sa (t)2 i zbog toga su drugog reda tonosti. Mogue je dokazati da je drugi
red tonosti najvei red koji se moe dosei dvorazinskim metodama.
koraku, ali su zato stabilnije (Ovdje navedene implicitne metode su bezuvjetno stabilne,
meutim to ne vrijedi generalno za sve implicitne metode, ali su one u svakom sluaju
stabilnije od eksplicitnih metoda). Postavlja se pitanje da li se mogu kombinirati dobra
svojstva iz obje vrste metoda. Prediktor-korektor metode (engl. Predictor-Corrector Methods)
su pokuaj takvog pristupa.
U ovoj metodi, rjeenje u novom vremenskom koraku se predvia koristei eksplicitnu
Eulerovu metodu:
* = n + f (t n , n ) t
n +1
(3.46)
43
gdje * indicira da to nije finalna vrijednost rjeenja za tn+1. Umjesto toga, rjeenje se ispravlja
trapezoidnim pravilom koristei n*+1 za raunanje derivacije:
n+1 = n +
1
f (t n , n ) + f (t n+1 , *n +1 ) t
2
(3.47)
Moe se dokazati da je ova metoda drugog reda tonosti ( red tonosti trapezoidnog pravila)
ali sadri, ugrubo gledajui, stabilnost eksplicitne Eulerove metode .
Ova metoda takoer pripada familiji dvorazinskih metoda, to znai da je drugi red
tonosti najvii koji se moe postii.
raunanje integrala (3.38), dobiva se metoda reda m+1. Metode ovog tipa se nazivaju AdamsBashforthove metode. Za rjeavanje parcijalnih diferencijalnih jednadbi koriste se jedino
metode nieg reda. Metoda prvog reda je eksplicitna Eulerova metoda, dok metode drugog i
treeg reda su:
n+1 = n +
t
3 f (t n , n ) f (t n1 , n1 )
2
n+1 = n +
t
23 f (t n , n ) 16 f (t n1 , n1 ) + 5 f (t n 2 , n 2 )
12
(3.48)
(3.49)
44
n+1 = n +
t
5 f (t n+1 , n+1 ) + 8 f (t n , n ) f (t n1 , n1 )
12
(3.50)
Obino metode koriste Adams-Bashfourthove metode (m-1)-og reda kao prediktor, i AdamsMoultonovu metodu m-tog reda kao korektor. Tim nainom se moe postii prediktorkorektor metoda bilo kojeg reda tonosti.
Pomou pristupa metoda koje koriste vie toaka mogue je jednostavno konstruirati
metode bilo kojeg reda tonosti. Osim toga, te metode je relativno lako programirati i
zahtijevaju samo jednu evaluaciju derivacije po vremenskom koraku, to ih ini relativno
"jeftinim". Glavni nedostatak metode je da zahtjeva podatke iz veeg broja toaka i nije
mogue pokrenuti program s podacima samo iz inicijalne toke. Jedan od moguih rjeenja
tog problema je poeti s malim vremenskim korakom i metodom nieg reda, te onda polako
sa dobivanjem veeg broja toaka poveavati red metode.
Navedene metode su temelj za mnoge metode rjeavanja diferencijalnih jednadbi
koritenim u raznim programima. U tim programima, koriste se procjenjivai pogreaka za
odreivanje tonosti rjeenja u svakom koraku. Ako rjeenje nije dovoljno blizu tonoj
vrijednosti, poveava se red metode sve do maksimalnog reda koji dozvoljava koriteni
program. U suprotnom sluaju, kada je rjeenje tonije nego to je potrebno, moe se smanjiti
red metode i pri tome utedjeti vrijeme potrebno za raunanje. Zbog oteanog mijenjanja
veliine vremenskog koraka u takvim metodama, red metode se smanjuje samo kada se
dosegne maksimalni red metode.
Zbog toga to navedene metode koriste podatke iz vie vremenskih koraka, mogu
rezultirati ne-fizikim rjeenjima to vodi do nestabilnosti. Taj problem je mogue djelomino
zaobii koristei pomno odabranu poetnu metodu.
45
* 1 = n +
n+
t
f (t n , n )
2
n+1 = n + t (t
n+
1
2
, * 1 )
n+
(3.51)
(3.52)
Ova metoda je laka za upotrebu i nije potrebno imati dodatne podatke za startanje,
samo inicijalni uvjeti koje zahtijevaju same diferencijalne jednadbe. U mnogim pogledima,
slina je ve opisanim prediktor-korektor metodama.
Runge-Kutta metode veeg reda tonosti su takoer jako razvijene. Najpopularnije su
metode etvrtog reda. Prva dva koraka te metode koriste eksplicitnu Eulerovu metodu kao
prediktor i implicitnu Eulerovu metodu kao korektor u trenutku tn+1/2. Nakon toga slijedi
prediktor temeljen na pravilu sredinje toke za cijeli korak i Simpsoovo pravilo kao finalni
korektor zbog kojeg je metoda etvrtog reda:
1
n+
2
=n +
** 1 = n +
n+
t
f (t n , n )
2
(3.53)
f t 1 , * 1
n+ 2 n+ 2
(3.54)
t
2
n*+1 = n + tf t
n +1 = n +
1
n+
2
, ** 1
n+
2
(3.55)
t
n
*
**
*
f (t n , ) + 2 f t 1 , 1 + 2 f t 1 , 1 + f (t n+1 , n +1 )
6
n+ 2 n+ 2
n+ 2 n+ 2
(3.56)
46
47
korak. Te estice su odabrane tako da njihova putanja zavrava tono u tokama regularne
Kartezijeve mree na kraju svakog vremenskog koraka.
Za rjeavanje postavljene advekcijske jednadbe koristi se metoda karakteristika, koja
je osnova semi-Lagrangeove metode. Ta metoda se koristi za rjeavanje jednadbi oblika:
+ u ( x , t ) = 0
(3.57)
gdje je skalarno polje i u(x, t) je funkcija brzine. Jednadba (3.57) pasivno propagira
svojstvo kroz vektorsko polje brzine u. Semi-Lagrangeova metoda se temelji na opaanju
da jednadba (3.57) propagira po karakteristinoj krivulji x=p(t) definiranom sa:
d
p(t ) = u (p(t ), t ) ,
dt
uz
p(0) = x 0 .
(3.58)
(3.59)
(3.60)
49
50
4. POSTAVLJANJE PROBLEMA
Svrha ovog rada je postavljanje algoritma za izradu simulatora dima u 2D ili 3D
podruju koji se zasniva na radu Fedkiwa, Stama i Jensena [1], te rada Stama [2] i njegovoj
teoriji stabilnih fluida (engl. stable fluid). U daljnjem tekstu je opisana problematika, metode
koje se koriste pri rjeavanju, te nain rjeavanja postavljenog problema.
(4.1)
u
1
= (u )u p + f ,
t
(4.2),
gdje je brzina plina u predstavljena kao vektor brzina kroz sve tri dimenzije :
u = (u , v, w) .
(4.3)
51
(4.4)
2 p =
1
u*
t
(4.5)
p
=0,
n
(4.6)
(4.7)
Osim jednadbi kojima se dobiva brzina estica fluida, trebamo jednadbe po kojima
se mijenjaju temperatura i gustoa:
T
= (u )T
t
(4.8)
= (u ) .
t
(4.9)
Obje vrijednosti, gustoa i temperatura utjeu na brzinu fluida. Teki plinovi imaju
tendenciju pada prema dolje zbog utjecaja gravitacije, dok topliji plinovi imaju tendenciju
rasta zbog utjecaja uzgona. Za primjer ovog simulatora se koristi jednostavan model
52
ukljuivanja ovih efekata tako da se definira vanjska sila koja je direktno proporcionalna
gustoi i temperaturi plina:
f buoy = z + (T Tamb )z
(4.10)
53
fenomena nazad u mreu prikaza. Jedan od naina vraanja takvih pojava nazad u tok bi bilo
kreiranje sluajnih ili pseuodo-sluajnih preturbacija toka koristei heuristiki ili fizikalno
temeljen model. Ovakav nain stvara rotacione i turbulentne strukture meutim ne postavlja
ih na fizikalno ispravno mjesto u toku gdje bi se one inae pojavljivale. Umjesto toga, detalji
se dodaju sluajnim odabirom pozicije u tok, te se time osigurava "ivost" simuliranog plina.
Meutim klju realistine animacije dima je da izgleda kao pasivno realistina prirodna
tvorevina nasuprot navedenoj metodi koja stvara "ivo" bie od dima. Zato se uvode fizikalno
korektne metode, kao to je metoda ograniavanja vrtlonosti (engl. vorticity confinementVC) koja je opisana dalje u tekstu.
Vrtlone pojave u tokovima sa velikim iznosom Reynoldsovog broja (turbulentna
polja-dodatak A.1) su uestale. Numeriko rjeenje Navier-Stokesovih jednadbi za vrtlone
pojave malih razmjera u toku je raunalno prezahtjevno. Stoga bilo kakav izraun ponaanja
takvih tokova mora sadravati izdvojenu metodu koja e implementirati takvo ponaanje
fluida. Postoje razne metode koje rjeavaju navedeni problem. Meutim koritenje nekih
metoda kao to je tradicionalna metoda simuliranja velikih vrtloga (engl. Large Eddy
54
rjeenje toka s mnogo tonijom prezentacijom nestablinosti. Nadalje, stvarna tanka ploha,
nakon to postane nestabilna, poinje se omotavati umjesto da divergira. VC modelira ovaj
fenomen s automatskim zasienjem koje je popraeno inicijalnom nestabilnou. Pri tome,
inicijalne nestabilnosti se pretvaraju u male vrtlone tvorevine (engl."blobs"), rairene kroz
nekoliko mrenih elija. Time se predstavljaju "omotavajue spirale" dima u pravim
55
tokovima, koji bi trebali imati precizne detalje i zahtijevaju mnogo finiju mreu, stoga moraju
biti prezentirani kao izdvojeni (filtrirani) objekti.
(4.11),
56
s = wn
(4.12)
gdje je:
~ n ) 1 1
(
l
wn = ~ n l
(4.13)
~ n = n +
l
l
(4.14)
57
Mora biti mogue uvesti vanjsku kontrolu sustava, tako da animator moe tono
definirati kako e se fluid ponaati.
Opseg gibanja koji moe biti animiran koristei tehnike trebao bi ukljuivati set
efekata dostupnih u postojeim raunalno-grafikim metodama, i proiren dodavajui
nove, interesantne i korisne metode.
58
Da bi se navedene jednadbe (2.7) i (2.8), ili (2.7) i (2.9) za neviskozne fluide, bile
rjeive na raunalu, potrebna je diskretizacija cijelog podruja na kojem rjeavamo navedene
jednadbe. Pri toj diskretizaciji, prepreke i sredstvo koje okruuje fluid se tretiraju isto kao i
fluid, samo sa nekim specijalnim svojstvima koja ostaju konstantna tijekom cijelog izrauna.
Za rjeavanje postavljenih jednadbi koristi se ve navedena metoda konanih volumena
(FV). Ta metoda dijeli domenu rjeenja u konaan broj susjednih kontrolnih volumena - elija
(engl. voxel ili control volume - CV) rasporeene u fiksnu pravokutnu mreu poravnate sa
Kartezijskim koordinatnim sustavom (slika 5.1). Komponente vektora brzine, u u smjeru osi
x, v u smjeru osi y i w u smjeru osi z, definirane su u centrima svake stranice elije i vezane su
lokalno, dok tlak p, i ostale skalarne vrijednosti definiramo u centru svake od elija kao to je
prikazano na slici 5.2.
u i +1 / 2, j ,k
i = 0,..., N , j , k = 1,..., N
vi , j +1 / 2,k
j = 0,..., N , i, k = 1,..., N
wi , j ,k +1 / 2
k = 0,..., N , i, j = 1,..., N
(5.1)
(5.2)
Koristei takvu notaciju moemo definirati neke diskretne operatore i izraze koji e se
koristiti u metodi rjeavanja. Divergencija se tada definira kao:
( u) i , j ,k =
(5.3)
( p x ) i +1 / 2, j ,k =
( p x ) i , j +1 / 2,k =
( p x ) i , j ,k +1/ 2 =
( pi +1, j ,k pi , j ,k )
h
( pi , j +1,k pi , j ,k )
h
( pi , j ,k +1 pi , j ,k )
(5.4)
u i , j ,k =
vi , j , k =
wi , j ,k =
(ui 1 / 2, j ,k + ui +1 / 2, j ,k )
2
(vi , j 1/ 2,k + vi , j +1/ 2,k )
2
( wi , j ,k 1/ 2 + wi , j ,k +1 / 2 )
2
(5.5)
Tada vrijedi:
i1, j ,k =
wi , j +1,k wi , j 1,k vi , j ,k +1 + vi , j ,k 1
2h
60
i2, j ,k =
i3, j ,k =
ui , j ,k +1 u i , j ,k 1 wi +1, j ,k + wi 1, j ,k
2h
vi +1, j ,k vi 1, j ,k ui , j +1,k + ui , j 1,k
2h
(5.6)
u i +1 / 2, j.k + =
vi , j +1 / 2.k + =
wi +1 / 2, j .k + =
t ( f i1, j ,k + f i1+1, j ,k )
2
t ( f i ,3j ,k + f i ,3j ,k +1 )
2
(5.7)
Povrinska elija - elija koja je na granici izmeu fluida i okolnog medija ( bitno za
viskozne tokove)
61
brzine objekta. Slino, temperatura u centru elije se postavlja na temperaturu objekta. Zbog
toga je mogue kreirati mnogo interesantnih efekata samo pomicanjem ili zagrijavanjem
objekta. Gustoa plina unutar objekta se postavlja na nulu. Ali, za izbjegavanje iznenadnog
pada gustoe na granici s objektom, na graninim elijama postavlja se gustoa plina jednaka
gustoi najblie susjedne neokupirane (ispunjene) elije.
Postoje dva tipa graninih uvjeta koji su korisni u praktinim aplikacijama:
(5.8)
iz kojeg se dobiva rjeenje koje je inicijalno stanje za idui korak. I tako za svaki t do kraja
simulacije.
62
u(x, t + t ) = w 4 (x) .
(5.9)
Simulacija se odvija prolazei ove korake u svakoj iteraciji. Slijedi detaljniji opis
svakog od koraka.
Slika 5.4. Svaki korak simulacije je kompozicija koraka. Prva tri koraka mogu "odvesti" polje brzina izvan
podruja divergencije. Zadnji korak osigurava divergenciju polja nakon svakog koraka simulacije.
63
(5.10)
Navedeni izraz (5.10) je dobra aproksimacija sile za interaktivne sustave kroz vremenski
korak t, jer se sile postavljaju samo na poetku svakog vremenskog koraka. U tom koraku
uzima se u obzir silu uzgona opisana jednadbom (4.10), sila definirana metodom
ograniavanja vrtlonosti (4.16), te bilo koja druga korisniki definirana sila. S obzirom da su
navedene sile definirane u centrima elija, brzine se u ovom koraku auriraju kao to je
navedeno u prijanjem odlomku u jednadbama (5.7).
Idui korak rjeava efekt advekcije fluida na samog sebe. Ta pojava se opisuje izrazom
-(u )u. Taj izraz ini Navier-Stokesove jednadbe nelinearnima. Foster i Metaxas u svom
radu za rjeavanje tog izraza koriste algoritam konanih razlika. Meutim takav pristup ini
njihovu metodu nestabilnom i potrebno je dodatno ogranienje nad veliinom vremenskog
koraka. Zbog toga, za male udaljenosti i velike brzine je potreban vrlo mali vremenski korak
da bi postupak bio stabilan. Da bi izbjegli takav efekt, u ovoj metodi se koristi potpuno
drugaiji pristup koji je uveo Stam [2]. Ta metoda se naziva semi-Lagrangeovom metodom, a
temelji se na rjeavanju parcijalno diferencijalnih jednadbi metodom karakteristika.
Detaljniji opis metode je ve naveden u poglavlju 3.7. Ovdje e se navesti samo bitne
karakteristike koje vode do rjeenja.
Za svaki vremenski korak estice fluida se kreu kroz prostor pod utjecajem brzine
samog fluida. Zbog toga, da bi se dolo do vrijednosti brzine u toki x u novom vremenskom
trenutku t+t , potrebno je pratiti unatrag toku x kroz polje brzina w1 kroz vrijeme t. To
definira putanju p(x,s) koja odgovara djelominoj strujnici polja brzine fluida. Nova brzina u
toki x je tada postavljena na brzinu koju je estica, trenutno na poziciji x, imala na svojoj
prijanjoj poziciji prije t vremena:
w 2 (x) = w 1 (p(x,t ))
(5.11)
64
Slika 5.6. Nain rjeavanja graninih uvjeta: ako toka izlazi izvan mree uzima se u obzir toka na granici
Ova metoda rjeavanja nelinearnog izraza za horizontalno strujanje -(u )u, ima par
prednosti. Najvanija prednost je bezuvjetna stabilnost. Osim toga, iz gore navedene
jednadbe (5.11) vidljivo je da maksimalna vrijednost novog polja nikad nije vea od najvee
vrijednosti prijanjeg polja. Osim toga, ova metoda je vrlo jednostavna za implementiranje.
Sve to zahtjeva u praksi je algoritam slijeenja estica i linearni interpolator. Jednostavna
linearna interpolacija koja je potrebna za ovaj postupak lako se implementira, i u kombinaciji
s metodom ograniavanja vrtlonosti daje zadovoljavajue rezultate. Umjesto jednostavne
linearne interpolacije mogue je koristiti i interpolacije viih razina, kao npr. kubina
65
interpolacija. Takve interpolacije daju bolji rezultat, meutim sa sobom donose i odreene
nedostatke to dovodi do nestabilnosti algoritma. Jednostavnost i stabilnost su dva vana
svojstva su poeljna za svaki simulator fluida u raunalnoj grafici. Na slian nain simuliramo
i strujanje gustoe i temperature kroz fluid.
Trei korak rjeava efekt viskoznosti. Taj efekt je zanemariv za plinovite fluide, ali e
svejedno zbog potpunosti biti opisan. Efekt viskoznosti moemo predstaviti difuzijskom
jednadbom:
w 2
= 2 w 2
t
(5.12)
(5.13)
gdje je jedinina matrica ili operator identiteta. Kada se operator difuzije diskretizira, ova
jednadba se svodi na slabo popunjeni linearni sustav (engl. sparse linear sistem)
za
divergencije. Kao to je bilo navedeno u poglavlju gdje su postavljene jednadbe toka, ovaj
korak ukljuuje rjeavanje Poissonove jednadbe koja glasi:
2q = w 3
(5.14)
w 4 = w 3 q
(5.15)
66
Slika 5.7. Svako polje se sastoji od polja bez divergencije i divergencije, da bi se dobilo polje bez divergencije
jednostavno je potrebno oduzeti divergenciju
Dakle, korak projekcije zahtjeva dobar Poissonov solver. Zbog utjecaja na preciznost metode
karakteristika kojom rjeavamo izraz za advekciju, bitno je da polje bude to blie polju bez
divergencije. Jo vanije, iz vizualnog gledita, projekcijski korak prisiljava polje da sadri
vrtlone pojave to rezultira realnijem prikazu plinovitih fluida. Zbog tih uvjeta koristi se to
toniji solver za ovaj korak.
Poissonova jednadba, kada se diskretizira, postaje takoer slabo popunjeni linearni
sustav jednadbi koji se moe rijeiti bilo kojom metodom spomenutom u poglavlju 3.5. U
ovom primjeru se koristi Gauss-Seidelova relaksacijska shema koja je takoer spomenuta u
tom poglavlju. Ta metoda se koristi za rjeavanje sustava od N dobivenih algebarskih
jednadbi koje moemo zapisati matrino:
Ax = b
(5.16)
Taj sustav se rjeava jedanput po iteraciji algoritma, koristei rezultate prethodnih koraka po
formuli:
bi aij x (jk ) aij x (jk 1)
xi( k ) =
j <i
i i
aii
(5.17)
67
(5.18)
68
6. ALGORITAM
Do sada je postavljen problem i opisan je nain rjeavanja sa svim dodatnim
koritenim metodama. Sada se moe postaviti algoritam rjeavanja problema toka plinovitih
fluida.
Za rjeavanje svih fizikalnih veliina, potrebne su dvije mree elija. Simulacija se odvija
auriranjem jedne mree iz druge kroz fiksan vremenski korak t. Pri svakom koraku sadraj
dviju mrea se zamjenjuje. Na poetku mrea sadri inicijalno stanje zadano od korisnika.
6.1.KORACI ALGORITMA
Za svaki t od poetka do kraja simulacije:
Za svaku eliju:
1.korak: auriranje brzina
o auriraj
vrijednost
vektora
brzine
pribrajanjem
komponente
sile
semi-Lagrangeovu metodu
o auriraj vrijednost vektora brzine projekcijskim korakom: rjeavanjem
Lagrangeovom meotodom
o auriraj
vrijednost
gustoe
fluida
rjeavajui
izraz
(12)
semi-
Lagrangeovom meotodom
69
Svaka elija se tretira kao da sadri konstantni iznos gustoe, temperature (u centru
elije) i brzine ( na rubovima elije). Sve te veliine se predstavljaju poljima veliine
vel = (N+2)*(N+2):
Uz alokaciju memorije:
u = (float *) malloc ( vel*sizeof(float) );
70
71
Kao to je spomenuto, postoji jedan fiksni izvor i mogue je u svakom trenutku dodati
jo koji. To se u glavnom programu sprema u pomono polje koje se predaje potprogramu kao
dens0.
void dens_step ( int N, float * dens, float * dens0, float * Temp, float *
Temp0, float * u, float * v, float dt ).
imao u prolom koraku) koja se nalaze u polju dens tako da se pomnoe sa jedinicom
vremena.
for ( i=0 ; i<vel ; i++ ) dens[i] += dt*dens0[i];
Sada inicijalna mrea sadri i inicijalno stanje iz prolog koraka i iznose gustoa
dodanih s izvorima u tom koraku. Nakon toga slijedi korak advekcije.
Prije samog koraka zamjenjuju se vrijednosti poljima dens i dens0 jer se u tom koraku
koristi inicijalno stanje za izraunavanje novog stanja ( kao to je opisano u prijanjim
poglavljima, advekcija je irenje nekog svojstva u smjeru vektora brzine, u ovom sluaju
gustoe ):
zamjena (dens, dens0, N);
Sada je dosadanje stanje spremljeno u polju i mogue je pomou toga raunati novo stanje za
svaku eliju.
for ( i=1 ; i<=N ; i++ )
{
for ( j=1 ; j<=N ; j++ )
{
Gustoa se nalazi u sredini elije, dok su brzine na stranicama. Zbog toga potrebno je prvo za
svaku eliju izraunati iznos brzine u sreditu:
usred=(u[IX(i,j)]+u[IX(i-1,j)])*0.5f;
vsred=(v[IX(i,j)]+v[IX(i,j-1)])*0.5f;
72
Nakon raunanja srednje brzine, trai se pozicija sredinje toke elije u prijanjem trenutku,
pomicanjem trenutne pozicije (i, j) po suprotnom smjeru brzine (u nazad):
x = i-dt*N*usred;
y = j-dt*N*vsred;
Slika 6.2. Korak advekcije: (a) tok fluida se moe opisati vektorima koji prate strujnice, (b) korak algoritma u
naprijed, (c) korak algoritma u nazad - Lagrangeova metoda
Time se dobiva toka (x, y) koja oznaava tonu poziciju sredinje toke tekue elije u
prijanjem trenutku. Pri ovom koraku bitno je paziti da vrijednosti x i y ne bi izali izvan
domene mree, te se u tom sluaju moraju postaviti na sam rub:
if (x<0.5f) x=0.5f; if (x>N+0.5f) x=N+0.5f;
if (y<0.5f) y=0.5f; if (y>N+0.5f) y=N+0.5f;
Kad je sigurno da toka (x, y) lei unutar domene raunanja, odreuju se etiri susjedne elije
koje e se koristiti za interpolaciju gustoe na traenoj poziciji:
i0=(int)x; i1=i0+1;
j0=(int)y; j1=j0+1;
Kada su odreeni indeksi elija izmeu kojih e se vriti interpolacija gustoe, potrebno je
definirati parametre za linearnu interpolaciju:
s1 = x-i0; s0 = 1-s1; t1 = y-j0; t0 = 1-t1;
73
Nakon toga dobiva se nova vrijednost tako da joj se pridrui vrijednost na poziciji (x, y) iz
prijanjeg koraka koja se dobiva interpolacijom etiriju susjednih vrijednosti iz prolog
trenutka koje su najblie dobivenoj poziciji:
dens[IX(i,j)] = s0*(t0*dens0[IX(i0,j0)]+t1*dens0[IX(i0,j1)])+
s1*(t0*dens0[IX(i1,j0)]+t1*dens0[IX(i1,j1)]);
Temp[IX(i,j)] = s0*(t0*Temp0[IX(i0,j0)]+t1*Temp0[IX(i0,j1)])+
s1*(t0*Temp0[IX(i1,j0)]+t1*Temp0[IX(i1,j1)]);
Time zavrava korak advekcije gustoe i temperature nakon kojega novo stanje se nalazi u
poljima dens i Temp koja se alju nazad u glavni program, gdje se iscrtavaju na zaslon, te
slue kao inicijalno stanje za idui korak.
Druga funkcija koja obiljeava simulator je funkcija koraka auriranja brzine:
void vel_step ( int N, float * u, float * v, float * u0, float * v0,
float * dens, float * Temp, float Tamb, float alfa,
float beta, float dt ).
Isto kao i kod funkcije za auriranje gustoe, polja u i v sadre stanje iz prolog koraka koje
se koristi kao inicijalno stanje u tekuem koraku. Polja u0 i v0 sadre iznose sila izvora koja
se prenose iz glavnog programa. Ostale varijable su konstante i polja koja sadre podatke
potrebne za izraun pojedinih koraka.
Funkcija za auriranje brzine se sastoji od 3 glavna koraka, kao to je navedeno u
algoritmu u poglavlju prije. Prvi korak je dodavanje sila. U ovom primjeru koriste se tri
razliite vrste sila: sile definirane od korisnika u glavnom programu prenesene u poljima u0 i
v0,
Ta funkcija vraa iznose sila u poljima fx i fy . Funkcija trai pozicije u mrei gdje je
potrebno "umetnuti" vrtloge malih razmjera kao to je opisano u poglavlju X.
Nakon to su poznate sve vrijednosti svih definiranih sila, one se dodaju u polja brzina
na isti nain kao to su se dodavali izvori u polje gustoe, uz jednu malu razliku: sile se
definiraju u sreditima elija, te je zbog toga potrebno brzine aurirati s njihovom srednjom
aritmetikom vrijednosti.
74
Prije drugog koraka vri se jedan meukorak. Naime, korak advekcije brzine je toniji
ako je polje brzine bez divergencije. Zbog toga se korak projekcije koji uklanja divergenciju
primjenjuje jedanput prije advekcije. Korak projekcije se sastoji od raunanja divergencije za
svaku eliju pozivom funkcije:
void divergencija (int N, float * div, float * p, float * u, float * v);
Kada su poznate sve divergencije poziva se funkcija za rjeavanje sustava linearnih jednadbi,
koja je u potpunosti preuzeta iz rada Stam [X]:
void lin_solve ( int N, int b, float * x, float * x0, float a, float c )
75
Time su dobivene dvije nove pozicije: (x, y) kao pozicija toke vektora brzine u u prijanjem
vremenskom trenutku, te toka (x1, y1) kao pozicija toke vektora brzine v u prijanjem
vremenskom trenutku. Daljnji postupak je analogan advekciji gustoe. Pazi se da novo
dobivene toke ne izlaze izvan mree i za obje toke se ponavlja postupak nalaenja se etiri
susjedne elije izmeu kojih se radi interpolacija po vrijednostima brzina. Na kraju postupka,
u poljima u i v se nalaze trenutna stanja brzina. Dobivena polja opet sadre divergenciju te je
potrebno ponoviti korak projekcije.
Novi korak projekcije, koji je zadnji korak auriranja brzine je identian predkoraku za
advekciju:
divergencija( N, div, p, u, v );
lin_solve ( N, 0, p, div, 1, 4 );
oduzmi_gradijent_tlaka( N, u, v, p);
Na kraju ovog postupka u poljima u i v se nalaze brzine koje se vraaju u glavni program. U
glavnom programu se pomou tih polja iscrtavaju vrijednosti na zaslon te se nakon toga
koriste kao novo inicijalno stanje za idui vremenski korak.
U glavnom programu poziva se simulator dima i vri iscrtavanje na isti nain kao u
Stamovom simulatoru. Simulator se poziva u posebnoj GLUT funkciji idle koja se izvrava
dok nema drugih aktivnosti:
76
U toj funkciji se prvo poziva rutina za interakciju sa korisnikom gdje se prikupljaju novi
podaci o trenutnim izvorima i promjenama u sustavu. Nakon toga se pozivaju opisane
funkcije i to prvo funkcija za auriranje brzine, te onda funkcija auriranja gustoe. Nakon
svakog takvog koraka vri se iscrtavanje slike.
Iscrtavanje se vri funkcijom:
static void display_func ( void )
{
pre_display ();
if ( dvel ) draw_velocity ();
else
draw_density ();
post_display ();
}
Iz funkcije je vidljivo da je mogue vriti dva naina iscrtavanja koje korisnik moe mijenjati
pomou varijable dvel koju je mogue promijeniti tijekom izvravanja programa tipkom "v".
S obzirom na vrijednost varijable poziva se funkcija za iscrtavanje gustoe ili funkcija za
iscrtavanje vektora brzina. Pri iscrtavanju gustoe koristi se funkcija:
static void draw_density ( void ),
u kojoj se pomou indeksa elija odreuje pozicija centra za svaku eliju (gdje je definirana
gustoa):
x = (i-0.5f)*h;
y = (j-0.5f)*h;
77
=
=
=
=
dens[IX(i,j)];
dens[IX(i,j+1)];
dens[IX(i+1,j)];
dens[IX(i+1,j+1)];
(
(
(
(
d00,
d10,
d11,
d01,
0,
0,
0,
0,
0
0
0
0
);
);
);
);
glVertex2f
glVertex2f
glVertex2f
glVertex2f
(
(
(
(
x, y );
x+h, y );
x+h, y+h );
x, y+h );
mapira
Brzinu crtamo iz donjeg desnog kuta elije kao liniju koja predstavlja zbroj vektora brzine:
glVertex2f ( x, y );
glVertex2f ( x+u[IX(i,j)], y+v[IX(i,j)] );
78
7. REZULTATI
Implementirani algoritam daje lijepe i realistine prikaze dima u realnom vremenu.
Mogue je mijenjati razne parametre te tako utjecati na izgled i fizikalne osobine dima. Pri
pokretanju programa mogue je zadati neke od parametara ili se koriste predviene
vrijednosti. Koriteni parametri i njihove inicijalne vrijednosti navedene su u tablici 1, gdje su
N broj elija u jednom smjeru, dt vremenski korak, alfa i beta konstante koritene za silu
uzgona, a force i source konstante koritene za skaliranje ulaznih podataka pri interakciji s
miem. Osim navedenih parametara mogue je dodavati i izvore i ponore te razliite
preturbacije. U nastavku poglavlja dani su prikazi nekih od rezultata uz razliite parametre.
PARAMETAR
N
dt
alfa
beta
force
source
VRIJEDNOST
128
0,1
0
0
10
100
Slika 7.1 prikazuje rezultat simulacije za jedan izvor uz inicijalne vrijednosti svih parametar
79
Dodavanjem sila desnom tipkom mia, te dodavanjem dodatnih izvora gustoe lijevom
tipkom mia, postiu se razne preturbacije dima kao na slici 7.2.
Slika 7.2. Jedan izvor uz inicijalne vrijednosti parametra uz dodavanje sila i izvora interakcijom korisnika
pomou mia
Osim izvora u sceni se mogu definirati i ponori. Na slici 7.3 definiran je tako jedan
aktivni ponor na sredini gornjeg ruba, na slici je vidljivo kako ponor "izvlai" dim iz
zatvorenog prostora.
80
Osim tako definiranog ponora, mogue je definirati ponor kao "crnu rupu" koja uvlai
dim oko sebe kao na slici 7.4.
Slika 7.4. Ponor je definiran kao crna rupa koja uvlaci okolni dim u sebe
Ako se eli simulirati silu uzgona mogue je mijenjati parametre alfa i beta. Tako za
dobivamo utjecaj da je gui dim tei kao na slici 7.5.
81
Implemenitrani algoritam radi u realnom vremenu zbog koritenja malog broja elija.
Meutim unato grubljoj mrei dim i dalje izgleda realan. Na slici 7.6 moe se vidjeti kako
izgleda dim na grubljim i finijim mreama.
a)
b)
7.6. Prikaz dima na grubljim mreama uz N=80 (a) i na finijim mreama uz N=200 (b)
82