Author
hoangnhan
View
225
Download
0
Embed Size (px)
SVEUILITE U ZAGREBU
FAKULTET ELEKTROTEHNIKE I RAUNARSTVA
DIPLOMSKI RAD br. 1236
SIMULACIJA FLUIDA SUSTAVOM ESTICA
Marta Potenjak
Zagreb, lipanj 2016.
Zahvaljujem se svojim roditeljima, teti Alemki, i sestrama.
Zahvaljujem se i profesorici eljki Mihajlovi na mentorstvu i pomoi tijekom
studiranja.
Sadraj
Uvod ....................................................................................................................... 1
1. Osnovna svojstva fluida .................................................................................. 3
1.1. Tlak .......................................................................................................... 4
1.2. Gustoa .................................................................................................... 5
1.3. Viskoznost ................................................................................................ 5
1.4. Osnovni pristupi razmatanju fluida ........................................................... 7
1.5. Navier-Stokesove jednadbe ................................................................... 9
2. Raunalna dinamika fluida ............................................................................ 12
2.1. Kratka povijest raunalne dinamike fluida .............................................. 12
2.2. Kratak pregled danas najzastupljenijih metoda ...................................... 13
2.2.1. Metode zasnovane na reetci (eulerov pristup) .............................. 14
2.2.2. Metode zasnovane na esticama (Lagrangeov pristup) .................. 15
2.2.3. Ostale metode ................................................................................. 15
2.3. Simulacija i animacija fluida .................................................................. 16
3. Karakteristike OpenGL-a i osnovna struktura koda ....................................... 18
3.1. OpenGL ................................................................................................. 18
3.2. Sjenari (engl. Shader) .......................................................................... 19
3.3. Cjevovod izrade prikaza ......................................................................... 19
3.3.1. Generiranje podataka ..................................................................... 20
3.3.2. Sjenar vrhova (engl. Vertex shader) .............................................. 20
3.3.3. Mozaik (engl. Teselleation) ............................................................. 21
3.3.4. Geometrijski sjenar ....................................................................... 21
3.3.5. Izrada prikaza ................................................................................. 22
3.3.6. Sjenar fragmenata ......................................................................... 22
3.3.7. Iscrtavanje scene ............................................................................ 22
3.4. Struktura programa ................................................................................ 22
4. Simulacija gibanja jednostavnim sustavom estica ....................................... 25
4.1. Ideja programa ....................................................................................... 25
4.1.1. Sustav estica u kontekstu raunalne grafike ................................. 26
4.2. Struktura estice i koda .......................................................................... 27
4.3. Parametri simulacije ............................................................................... 28
4.4. Prednosti i nedostatci ovakvog pristupa ................................................. 30
5. Aproksimacijska visinska mapa ..................................................................... 31
5.1. Implementacija ....................................................................................... 33
5.2. Dodavanje estica i njihova kolizija ........................................................ 34
5.3. Prednosti i mane visinskih mapa ............................................................ 35
6. Metoda zaglaene hidrodinamike estice (SPH) ........................................... 36
6.1. Osnove SPH .......................................................................................... 36
6.2. Osnovni algoritam .................................................................................. 37
6.2.1. Gustoa estice .............................................................................. 38
6.2.2. Tlak ................................................................................................. 38
6.2.3. Viskoznost ...................................................................................... 38
6.3. Odabir kernel funkcije ............................................................................ 39
6.4. Implementacija rubnih uvjeta ................................................................. 40
6.5. Ubrzavanje algoritma ............................................................................. 42
6.6. Problemi i utjecaj parametara ................................................................ 42
6.7. Simulacije ............................................................................................... 43
Zakljuak .............................................................................................................. 45
Literatura .............................................................................................................. 46
Saetak ................................................................................................................ 47
Summary .............................................................................................................. 48
Privitak ................................................................................................................. 49
Popis slika
Slika 1.1 Sila na jedinicu povrine .......................................................................... 4
Slika 1.2 Med kao primjer viskoznog fluida (slika preuzeta iz Agricultural Research
Service) .................................................................................................................. 6
Slika 1.3 Lagrangeov nain promatranja fluida....................................................... 7
Slika 1.4 Eulerov nain promatranja fluida ............................................................. 7
Slika 2.1 Prikaz vektora brzina fluida na reetci ................................................... 14
Slika 2.2 Prikaz jednog koraka toka (Preuzeto iz [13]) ........................................ 16
Slika 3.1 Cijevovod izrade prikaza ........................................................................ 19
Slika 4.1 Fontana (Slikala Samanta Kreti) .......................................................... 25
Slika 4.2 Prikaz fontane ........................................................................................ 29
Slika 5.1 Eksplozija simulacije za prevelik parametar priguenja brzine .............. 32
Slika 5.2 Simulacija za razliite poetne funkcije .................................................. 32
Slika 5.3 Valovi uzrokovani interakcijom s korisnikom .......................................... 34
Slika 5.4 Interakcija mape sa sustavom estica .................................................. 35
Slika 6.1 Kaotino gibanje po ekranu ................................................................... 40
Slika 6.2 Lijepljenje estica za rubove .................................................................. 41
Slika 6.3 Prikaz prve simulacije prije i poslije ....................................................... 43
Slika 6.4 Prikaz druge simulacije prije i poslije ..................................................... 44
Uvod
Upita li se bilo kojeg strunjaka koji se bavi raunalnom grafikom to je to najtee
simulirati i prikazati na raunalu, svi odgovori mogli bi se svesti na jedan zajedniki
nazivnik fizikalno temeljena simulacija. Kolizija pramena kose s podlogom,
turbulentni vrtlog, elastinost pojedine tkanine, gravitacijske sile sustava zvijezda
samo su neki od primjera. Stoga nije neobino da je i simulacija fluida zauzela
mjesto pri vrhu ljestvice. Njezina problematika je dvojaka. Prvo, mehanika fluida
sama po sebi trai veliko razumijevanje i poznavanje osnovnih teorijskih koncepata
i naela, prepoznavanje i identificiranje razliitih parametara, njihovog odnosa te
naina na koji oni utjeu na fluid. Potrebno je napraviti dobar model sustava. Tek
onda moe se razmiljati o prikazivanju navedenoga na raunalu. Kad se to u
konanici i uspije svesti na matematiki model i implementirati na raunalu, dolazi
se do drugoga problema. Raunanje je vremenski iznimno skupo i zahtjevno. Ne
samo da je potrebno napraviti ogroman broj izrauna prije iscrtavanja na ekran
nego su tekstura i povrina fluida problemi sami za sebe.
Tema ovoga diplomskoga rada bit e simulacija fluida s naglaskom na simulaciju
sustavom estica. Simulacija fluida grana je raunalne grafike s ulogom prikazivanja
fluida na ekranu. Prouit e se osnove simulacije te razliiti pogledi na to. Napraviti
e se implementacija nekih osnovnih metoda te usporediti dobiveni rezultati.
Pokuat e se napraviti gradacija pregleda razliitih tehnika poevi od
najjednostavnije pa do one koja u sebi ukljuuje najvie fizike. Bez poznavanja
osnovna fluida bilo bi neizvedivo simulirati njihovo ponaanje. Zato e se prvo
poglavlje pozabaviti fizikalnom pozadinom i osnovnim svojstava fluida. Uslijedit e
kratka povijest raunalne dinamike fluida (CFD) te par rijei o tome kako se ona
moe iskoristiti za simulaciju fluida. S obzirom da e sve implementacije biti na
programskom jeziku C++ uz OpenGL, opisat e se pojedinosti OpenGL-a i osnovna
struktura programa koja e svoju formu zadrati u svim projektima. Zatim e se
opisati nekolika razliitih naina promatranja fluida, poevi od najjednostavnijeg ka
sloenijima. Poseban naglasak dat e se metodama koje fluid promatraju kao
sustav estica. Prva metoda koja e biti implementirana krajnje je jednostavna
simulacija fluida esticama koja ne uzima u obzir interakcije meu pojedinim
esticama. Zatim e se koritenjem proceduralne animacije i visinskih mapa
generirati povrina fluida. U zadnjem poglavlju pokuat e se u 2D prostoru
implementirati metoda koja svoje korijene vue iz CFD-a jednostavni SPH
simulator. Svi nepoznati pojmovi bit e bolje objanjeni u daljnjem tekstu.
1. Osnovna svojstva fluida
Veina ljudi pojam fluida asocira s tekuinom. Meutim fluid je puno vie od toga.
Zrak koji nas okruuje, magma u vulkanima pa ak i zrnca od kojih se sastoje
Saturnovi prstenovi spadaju u tu kategoriju. Ako pak proirimo kategoriju s tekuine
na tvari u tekuem i plinovitom agregatnom stanju, kako onda objanjavamo da i
plastika esto pokazuje svojstva fluida? to je onda fluid zapravo? Fluid je
supstanca koja se kontinuirano deformira pod djelovanjem smicanja. (McDonough,
2009) Smicanje je sila koja je paralelna sa smjerom gibanja (toka). Prethodna
definicija poprilino dobro hvata sr, a to je injenica da je fluid pod djelovanjem sile
smicanja tee.
Fluidima se bavi zasebna disciplina fizike mehanika fluida. Njena osnovna podjela
je na hidromehaniku (kretanje fluida) i hidrostatiku (fluidi u mirovanju). Obje
discipline svoje korijene seu jo u doba antike Grke i Arhimeda. Postoji nekoliko
osnovnih zakonitosti koje su uvijek zadovoljene, to su:
Hipoteza kontinuuma
Ouvanje mase
Ouvanje gibanja
Ouvanje energije
Hipoteza kontinuuma u kontekstu dinamike fluida znai sljedee Bez obzira koliko
mali dio volumena fluida promatrali, on zadrava sva makroskopska svojstva fluida
koja povezujemo s veom koliinom (McDonough, 2009). Objanjene ouvanja
mase poprilini je trivijalno bez obzira giba li se fluid ili miruje, ukupna masa ostaje
nepromijenjena. Ouvanje gibanja reformulacija je drugog Newtonovog zakona, dok
je ouvanje energije posljedica prvog zakona termodinamike. On kae da se
energija ne moe unititi ili stvoriti iz niega. Moe se samo prenijeti iz jednog oblika
u drugi.
Osnovna svojstva fluida koja e direktno utjecati na njegovo gibanje bit e tlak,
gustoa i viskoznost. Zbog svoje vanosti svaki e biti promotren u razliitom
potpoglavlju.
1.1. Tlak
Slika 1.1 Sila na jedinicu povrine
Tlak u fluidu nastaje uslijed njegove vlastite teine ili vanjskih sila, a karakteristino
za njega je da djeluje uvijek okomito na plohu na kojoj ga se promatra. (Andrei,
2014) Odgovora sili po jedinici povrine (Slika 1.1).
=
Mjerna jedinica za tlak je Pascal (Pa) te odgovara sili od jednog N koja djeluje na
povrinu 1 2. Tlak je veliina koja se poveava s dubinom fluida jer vii slojevi
svojom teinom pritiskuju donje slojeve. Takoer, na mjestima iste dubine iznos
tlaka je jednak. Zamislimo neki tekui fluid koji miruje u posudi. Tlak kojim djeluje na
dno posude ovisi samo o visini stupca te gustoi tekuine. Nikako ne ovisi o obliku
posude u koju smo ga stavili ili ukupnoj koliini tekuine u toj posudi. Ova pojava
naziva se hidrostatski paradoks. Tlak je veliina koja se propagira kroz fluid
trenutno te djeluje u svim smjerovima jednako. Bilo kakva promjena na jednom kraju
istodobno e se osjetiti na drugom. Ta zakonitost je osnova rada hidraulike dizalice
koja koristi malu silu na malu povrinu kako bi podigla objekt vee teine koristei
veu povrinu.
1.2. Gustoa
Gustoa materijala svojstvo je neovisno o veliini promatranoga uzorka te se
fizikalno opisuje kao koeficijent mase i volumena. Ukoliko je taj koeficijent stalan u
svakom djeliu materijala, nazivamo ga homogenim. Kod nehomogenih materijala
definicija gustoe se proiruje na promjenu mase po jedinci volumena.
D =dm
dV
Fizikalna veliina za gustou po SI sustavu je
3 . To je izvedena mjerna jedinica
koja proizlazi direktno iz formule. Gustoa je svojstvo koje uvelike ovisi o
temperaturi. Osim kod vode, kod svih materijala opada s porastom temperature.
Voda je najgua na 4 C. To je klju ivota u vodi za vrijeme zimskih mjeseci. Led
ja znatno laki od tekue vode pri niskim temperaturama. Kopnene vode se zbog
toga lede od povrine prema dubini.
Osim temperature, tlak takoer utjee na gustou fluida. Kod tekuina to nije
izraeno te je ta vrijednost neznatna. S druge strane, kod plinova tlak igra jako veliku
ulogu te je poveanje tlaka proporcionalno poveavanju gustoe.
1.3. Viskoznost
Viskoznost fluida mjera je kojom se fluid opire deformaciji pri smicanju. To je
zapravo koeficijent unutarnjeg trenja fluida. Matematiki opis ovoga svojstva je
koeficijent smicanja i gradijenta brzine.
Ova formula odgovara dinamikoj viskoznosti. Postoji jo i kinetika viskoznost. Ona
opisuje otpor uz gravitaciju i jednaka je koeficijentu dinamike viskoznosti I gustoe
materijala.
Uzroci viskoznosti kod plinova i tekuina su razliiti. Kod prvih se javlja zbog
molekularnih sila, dok kod potonjih difuzijske sile meu slojevima uzrokuju izmjenu
impulsa. Viskoznost je iskljuivo svojstvo materijala i javlja se samo pri gibanju. to
je vea, fluid se tee giba i obrnuto. Sada lako moemo zakljuiti da je med puno
viskozniji od vode koja je pak viskoznija od zraka (Slika 1.1). Nadalje, ona ovisi o
temperaturi. Kod tekuina je obrnuto proporcionalna porastu temperature. to je
temperatura vea, molekule se sve vie udaljavaju i manje utjeu jedna na drugu.
Kod plinova je drukija situacija. Porast temperature uzrokuje sve kaotinije gibanje
molekula, to rezultira sve eim kolizijama.
Ukoliko je viskoznost fluida kao koeficijent ve navedenih veliina linearna funkcija,
takav fluid smatrat emo njutnovski. Njutnovski fluid zadrava svojstva fluida bez
obzira koliko ga mijeali, trgali ili primjenjivali smicanje. Fluid je nenjutnovski inae.
Kod takvog moe doi do trganja i pojavljivanja rupa.
Slika 1.2 Med kao primjer viskoznog fluida (slika preuzeta iz Agricultural Research
Service)
1.4. Osnovni pristupi razmatanju fluida
Slika 1.3 Lagrangeov nain promatranja fluida
Slika 1.4 Eulerov nain promatranja fluida
U fizikalnom razmatranju fluida dva su osnovna pristupa lagrangeovski i
eulerovski. Kako bi se bolje razumio pojedini pristup, povui e se analogija s
restoranom. Zamislimo restoran s konobarima koji posluuju po cijelom restoranu i
stolovima kao fiksnim tokama. Serviranje hrane moemo promatrati na dva naina.
Prvi bi bio da pratimo svakog konobara i gledamo kuda se kree i koje stolove
obilazi. Jedan konobar e u jednoj veeri obii puno razliitih stolova. Drugi bi bio
da se fiksiramo na stolove i gledamo koji konobar dolazi do njega. U jednoj veeri
puno razliitih konobara e doi do stola. Prvi nain odgovarao bi lagrangeovom, a
drugi eulerovskom pristupu. Sada emo to primijeniti na fluide. Slike 1.3 i 1.4
predstavljaju fluid. Ukoliko ih promatramo lagranegovski (Slika 1.3) , fokusirat emo
se na sitne dijelove fluida, tzv. estice i pratiti njihovo kretanje u vremenskom
kontekstu. Zasebno promatramo svaku plavu tokicu (esticu) sa slike. Svaka
estica nositelj je svojstva fluida kao to su masa, brzina... Svako takvo svojstvo
estice oznaava se u vremenskom kontekstu, npr v(t), x(t). Eulerovski pristup
fiksirat e odreene toke prostora i gledati to se dogaa u njima (Slika 1.4), to
utjee, to istjee. Na slici 1.4 kvadrat oznaava fiksan prostor koji gledamo, a plave
tokice su dio fluida koji se u promatranom trenutku tamo zatekao. Svako svojstvo
oznaavat e se i u vremenskom i u prostornom kontekstu, primjerice v(x,t). Prostor
se dijeli na imaginarnu reetke i u vremenskom trenutku promatraju se stanja
pojedinih elija. I jedan i drugi pristup imaju prednosti i mane. Razliite fizikalne
veliine bolje odgovaraju jednom ili drugom sustavu. Primjerice, kada priamo o
akceleraciji, puno ju je lake i intuitivnije opisati u lagrangeovom sustavu. To je
promjena brzine jedine estice po jedinci vremena. Ako pak to pokuamo prenijeti
u eulerov sustav, formula se znatno komplicira. U jednom vremenskom trenutku t1
promatranjem odreene elije i estice u njoj. U vremenu t2 te estice vie nisu
tamo. One se sada nalaze na novoj poziciji koju takoer moramo uzeti u obzir pri
raunanju. Druge veliine poput viskoznosti, lake je opisati u eulerovom sustavu.
Iz ovoga proizlazi jedan od fundamentalnih problema dinamike fluida razliiti
parametri bolje odgovaraju jednoj ili drugoj interpretaciji, ali veinom svi moraju biti
uzeti u obzir. Moramo se odluiti za jednu, ali koju god odabrali, uvijek e se morati
rtvovati neto.
Ipak postoji nain da se ova dva pristupa poveu, a to je materijalna derivacija.
Materijalna derivacija izraava brzinu promjene fizikalnog svojstva estice fluida, tj.
promjenu koju bi osjetio promatra kad bi se gibao zajedno sa esticom (avar,
Virag, & Dijan, 2014). Inicijalno se materijalna derivacija povezuje s lagrangeovim
pristupom. Njenim zapisivanjem u eulerovom dobiva se direktna povezanost
promjene svojstava eulerovom. Time e se primjerice bez problema moi zapisati
akceleracija u eulerovom sustavu koju smo ve istaknuli kao kompliciranu
komponentu.
Lijeva strana jednadbe je lagrangeova dok je prvi izraz desne strane Eulerova
interpretacija. Desna strana kae da se promjena svojstva moe dogaati iz dva
razloga. Ili se svojstvo mijenja u vremenu (prvi lan) ili je estica otila na mjesto
gdje je drukija vrijednost toga svojstva (drugi lan). Sada se konano moe i
raspisati izraz za akceleraciju u Eulerovom sustavu. U gornjoj formuli svojstvo F
zamijeniti e se sa brzinom, koja se u mehanici fluida standardno oznaava sa
slovom u, te se dobiva
U trodimenzionalnom prostoru brzina u sastoji se od triju komponenti: x, y, i z, od
kojih je svaka usmjerena u odgovarajuem smjeru pripadajue koordinatne osi.
Simbol oznaava del operator i predstavlja parcijalnu derivaciju. Raspisivanjem
parcijalne derivacije dolazi se do sljedeega oblika zapisa
1.5. Navier-Stokesove jednadbe
Do poetka 19. stoljea za opis toka fluida koristila se Eulerova jednadba.
Claude-Louis Navier, francuski fiziar s poetka 19. stoljea, uveo je viskoznost u
tu jednadbu. Otprilike 100 godina kasnije irski fiziar Gabriel Stokes redefinirao je
te jednadbe koje danas znamo pod imenom Navier-Stokesove jednadbe, a ine
fundamentalnu osnovu toka fluida. U kontekstu ovoga rada promatrat e se samo
jednadbe koje se odnose na nestlaive fluide. Nestlaivi fluid je onaj iji je volumen
postojan bez obzira na tlak i temperaturu. U realnosti takav fluid ne postoji. Kada bi
voda bila takav fluid, nikad ne bismo mogli uti pod vodom. Ipak, tekuine se
pribliavaju onome to bismo nazvali nestlaivim fluidom.
Jednadbe svoje podrijetlo vuku iz drugog Newtonovog zakona F = m* , ali dodaju
i dodatne parametre kao to je viskoznost. Prva jednadba odnosi se na ouvanje
mase i kae da se prenoenjem mase vektorom brzine ukupna masa fluida ne moe
promijeniti.
Druga jednadba glasi
Na prvi pogled, jednadba se ini kompliciranom. Zapravo se ve upoznalo s njenim
dijelovima u prethodnim poglavljima. Desna strana oznaava izraz za akceleraciju
u Eulerovom pogledu na fluide. Ova jednadba govori emu je zapravo jednaka
akceleracija, odnosno promjena brzine. Lijeva strana se sastoji od triju komponenti.
Prva oznaava gravitaciju. Ukoliko su u sustav ukljuene neke dodatne sile koje
djeluju na fluid, one e se takoer ukljuiti i ovaj dio po formuli
Drugi dio odnosi se na tlak kojim estice fluida djeluju jedna na drugu. Oko estice
javljaju se razliita polja tlakova koja nisu istoga iznosa. estica se onda giba iz
smjera viega prema smjeru niega tlaka, suprotno od gradijenta vektora tlaka.
Zadnji dio desne strane odnosi se na viskoznost koju smo ve definirali kao otpor
fluida prema teenju. to je vea viskoznost, dio fluida koji se prvi poinje gibati jae
e za sobom povlaiti ostatak fluida jer e se fluid vie opirati toku. Viskoznost je
usko povezana s brzinom te se nikad ne oituje, osim pri gibanju. To objanjava
komponentu brzine u jednadbi.
Sada kada su poznate sve komponente jednadbe, moemo je izrei rijeima. Fluid
se giba pod utjecajem gravitacijske sile, vanjskih sila koje djeluju na sustav, razlike
tlakova i viskoznosti kao svojstva fluida.
Potrebno je definirati rubne uvjete Navier-Stokesovih jednadbi. Fluid moe imati
dvije granice podlogu i slobodnu povrinu. Ako se nalazi uz podlogu brzina toga
dijela fluida postavlja se na brzinu te podloge. Ako se podloga giba, daje se ta
brzina, ako se ne giba stavlja se na nulu. Slobodna povrina oznaava granicu s
drugim fluidom kao to je zrak ili neka druga fluidna supstanca. U tom sluaju za
drugi fluid treba definirati gustou i brzinu granice.
2. Raunalna dinamika fluida
2.1. Kratka povijest raunalne dinamike fluida
Uz danu godinju koliinu padalina, kako se moraju oblikovati odvodi kako bi
uklonili pravu koliinu vode? (Ashford, 1985) jedno je od najvanijih pitanja povijesti
raunalne dinamike fluida ( u daljnjem tekstu CFD). To je pitanje koje je postavljeno
poetkom 20. stoljea mladom Lewisu Fry Richardsonu, eklektinom engleskom
znanstveniku iroka polja interesa. Moda je ba to bila prva domina u domino
efektu otkria koji su CFD doveli do dananje razine. Ono to je on tada uio bilo je
revolucionarno do te razine da su mnoge ozbiljne ustanove ideju odbacile kao
previe aproksimativnu i smijenu. Richardson je napravio slijedee; imao je
Laplaceovu jednadbu, ali domena na kojoj je morao provesti izraun bila je
presloena. Njegova ideja bila je upotreba aproksimativnih jednadbi na samo
malenim djeliima toka, gdje bi onda mogao koristiti osnovne matematike
zakonitosti. Odlika koja ga je istakla bila je promatranje problema koji se do tada
nisu smatrali matematikima u matematikome svjetlu. Njegov doprinos nije se
ograniio na samo jedno polje znanosti. Ostavio je neizbrisiv trag i u meteorologiji
i psihologiji. Takoer, poznat je po velikom broju eksperimenata. Najpoznatiji je,
zasigurno, pokuaj da se promatranjem vremenskih uvjeta jednoga dana predvidi
vremenska prognoza za sutranji dan. Malo je rei da je procjena bila pogrena.
Meutim, danas je pokazano da bi se, primjenom metoda zaglaivanja na izraun,
tadanji izraun pokazao tonim.
Slijedee veliki korak donio je trio znanstvenika Courant, Friedrichs i Levy. Oni su
tridesetih godina prouavali linearne parcijalne diferencijalne jednadbe. Pokazali
su nuan uvjet koji mora biti zadovoljen da bi se takva jednadba s diferencijala
mogla svesti na razliku. Takav se postupak naziva metoda konane razlike.
() = ( + ) ()
Uvjet koji mora biti zadovoljen kako bi se ta metoda mogla primijeniti naziva se CFL
uvjet po inicijalima znanstvenika koji su ga otkrili.
ezdesetih godina znanstvenici Harlow i Welch dugotrajnim radom doli su do
metode Marker i elija (MAC). Zasnovana na Euerovoj reetci, MAC metoda je
tehnika konanih razlika za istraivanje dinamike nestlaivih viskoznih fluida
(McKee, i dr., 2007). U osnovi algoritma bile su lagrangeove estice koje su putovale
s poljima brzine. One su oznaavala rubove granica fluida i fluida ili fluida i zraka.
Ukoliko je neka elija sadravala takvu esticu, bila je oznaena kao rub.
Metoda konanih volumena javila se krajem stoljea. Prostor se diskretizirao na
malene volumene. U centru svakog takvog volumena bio bi nositelj podataka za taj
volumen. Podjelom prostora mogue je diferencijalne jednadbe svesti na
algebarske.
2.2. Kratak pregled danas najzastupljenijih metoda
Danas najzastupljenije metode se slino kao i kod mehanike fluida dijele na dvije
osnovne one zasnovane na eulerovom i lagrangianovom pogledu na fluide. Obje
imaju svoje prednosti i mane. Eulerov pogled esto daje sporije i tonije rezultate,
ali je loiji kod prikazivanja turbulentnijih tokova kao to su zapljuskivanje ili
eksplozija. Lagrangeov pristup je esto bri, ali generalno manje precizan te ostavlja
problem prikazivanja povrine. Ukoliko bismo promatrali odreen broj fiksnih toaka
u eulerovom sustava te broj estica u lagrangeovom, vea rezolucija bi se dobila u
prvom. U svojoj osnovi i jedna i druga metoda sadre rjeavanje diferencijalne
Navier-Stokesove jednadbe.
2.2.1. Metode zasnovane na reetci (eulerov pristup)
Slika 2.1 Prikaz vektora brzina fluida na reetci
Eulerovske metode, slino kao i eulereov pristup promatranju fluida, diskretiziraju
domenu na tzv. reetku te promatraju to se dogaa u pojedinim elijama. Na takvoj
domeni za dovoljno malu veliinu elije mogue je diferencijalne jednadbe svesti
na razliku. Svaka elija pamti za sebe podatke o dijelu fluida koji prolazi kroz nju (
gustoa, tlak, brzina). Mogue je sve podatke pamtiti u istu reetku, ali puno bolji
pristup je rasporeena reetka. Reetka se zove rasporeena zato to pamti
razliite veliine na razliitim lokacijama. (Tech, Sandu, & Braley) Na poetku
algoritam inicijalizira se retka te se fluid rasporedi po njoj. U svakom prolazu
algoritma izraunavaju se nove vrijednosti svojstava pojedine elije u ovisnosti o
brzini fluida i toj eliji i o prethodnim vrijednostima svojstava (Slika 2.1). Osnova
svakog koraka je advekcija prenoenje svojstava vektorom brzine. Opis advekcije
je slijedei: Ako je Q neka koliina na simulacijskoj reetci, kako e se Q promijeniti
kasnije. (Tech, Sandu, & Braley) Postoji vie naina izrauna, od kojih nisu svi
jednako stabilni.
Ovaj pristup ima svojih prednosti i mana. Ukupna masa nije uvijek ouvana.
Potrebno je provoditi izraune te ukljuiti u reetku svaki dio prostora u kojem se
fluid moe nai tijekom simulacije. Eulerove metode su stoga znatno sporije.
Prednost im je preciznost simulacije te puno bolje opisivanje povrine.
2.2.2. Metode zasnovane na esticama (Lagrangeov pristup)
Metode zasnovane na esticama temelje se na lagrangevom pogledu na fluide.
Fluid je predstavljen skupom estica te se raunaju interakcije meu njima.
Osnovna prednost ovoga pristupa je brzina. Mogue je postii dobre rezultate u
realnom vremenu te je pogodna za raunalne igrice. Takoer, ouvanje mase je
trivijalno jer konstantno baratamo s istim brojem estica koje imaju jednaku masu
cijelo vrijeme. Predstavnik ove skupine metoda, koji je danas najzastupljeniji, je
metoda SPH ( zaglaena hidrodinamika estica), o kojoj e biti vie rijei u zadnjem
poglavlju. Glavni nedostatak je problem prikazivanja povrine za koji je potrebno
upotrijebiti neke dodatne tehnike. Jedna od najpoznatijih je tehnika marirajuih
kocki (engl. Marching cubes algorithm). Njegovi kreatori su Cline i Lorensen. Do
2005. godine bio je zatien patentom, ali sada se smije slobodno koristiti. Algoritam
za 8 susjednih toaka rauna poligon koji bi najbolje predstavio povrinu unutar te
kocke u ovisnosti i poloajima estica.
2.2.3. Ostale metode
Zadnjih godina osim navedenih javljaju se i novi pristupi. Najpoznatiji je boltzmanova
latica (eng. Lattice Boltzmann method). Za razliku od prethodnih, metoda ne
rjeava direktno Navier-Stokesove jednadbe te se ne bavi makroskopskim
svojstvima fluida. Fluid predstavlja skupom estica te rauna odnose meu njima
na puno nioj razini - molekularnoj. U konanici, ono to je poznatije kao
makroskopsko svojstvo ustvari je samo rezultat ili manifestacija razliitih procesa na
nioj razini. estice svojim sudarima izmjenjuju energiju i gibanje. Prostor se dijeli u
elije te se za svaku definiraju dva svojstva gustoa i brzina. Jedna iteracija
algoritma odvija se u dva koraka:
Kolizija
Tok
U koraku kolizije za pojedinu eliju rauna se gustoa i brzina. Ta brzina koristi se
u koraku toka (Slika 2.2) za pomicanje estica fluida u drugu eliju. Ovisno o strukturi
latice mogue je ogranieno gibanje iz jedne elije u drugu. Postoje tono
predefinirani smjerovi kojima se smije ii. Prednost ove metode je mogunost
paralelizacije kod programske implementacije. Relativno je brza te puno bolje barata
s rubnim uvjetima.
Slika 2.2 Prikaz jednog koraka toka (Preuzeto iz [13])
2.3. Simulacija i animacija fluida
Postoji specijalna grana raunalne grafike zaduene za realistinu animaciju fluida.
Iako ima velik broj dodirnih toaka sa CFD-om, ipak se razlikuje u nekoliko osnovnih
stvari. Dok je kod CFD-a naglasak na realistinoj simulaciji toka i to realnijem
ponaanju fluida pri zadanim uvjetima, kod animacije je naglasak na tome da neto
izgleda kao fluid. Nije nuno potrebno znanje o svim procesima i jednadbama koje
se dogaaju te e se puno manje kompleksni modeli pokazati zadovoljavajuima.
Dvije glavne industrije koje koriste simulaciju fluida su filmska industrija i industrija
razvoja igara.
Poetci ove industrije najvie duguju Nicku Fosteru i Dimitrisu Metaxasu. Do
njihovog preokreta fluid se na raunalu simulirao bez raunanja formula statike i
dinamike fluida. Oni su 1996. uspjeli vizualizirati fluid u trodimenzionalnome
prostoru na raunalu koristei Navier-Stokesove jednadbe. Bio je to poetak nove
ere raunalne grafike. Prvi koji je uspio napraviti simulaciju fluida koja je bila stabilna
u svim uvjetima, a bila je relativno brza bio je Joe Stam. Poelo se najprije sa
simulacijama relativno mirnih povrina vode. Danas je simulacija fluida vizualno
toliko dobro razvijena da je teko odrediti to je pravi fluid, a to raunalno
izraunato i generirano. Naravno, primat ima izgled. Njegova realnost postie se
upotrebom taman dovoljno fizikalnih zakona da bi izgledalo realno, ali ne mora
nuno biti sto posto tono. Takoer, izgled se postie i nautrb vremena kojeg u
filmskoj industriji ima dovoljno.
3. Karakteristike OpenGL-a i osnovna struktura
koda
3.1. OpenGL
OpenGL grafiki sustav je programsko suelje grafikom sklopovlju (Shrainer,
Sellers, Kessenich, & Licea-Kane). Prva verzija razvijena je 1992. kao nastavak
projekta IrisGL. Od tada je postao imperativ raunalne grafike i dio koji se vrti ispod
haube u mnogobrojnim pogonima za grafiku simulaciju i izradu igara. U poetku
je bio dosta ogranien, na dosta stvari se nije moglo utjecati jer tadanje grafike
kartice nisu bile programirljive kao to su danas. Kako se sklopovska oprema
mijenjala, razliitim ekstenzijama OpenGL moglo se pristupiti do tada
programirljivim dijelovima hardvera. Meutim, od 2007 i OpenGL verzije 2.0 fiksni
cjevovod je maknut te je OpenGL omoguio vlastito programiranje sklopovskih
dijelova. Trenutno aktivna verzija na tritu je 4.5, a putena je 11. 8. 2014.
OpenGL ima klijent-server arhitekturu. Korisnik daje naredbe koje se zatim
izvravaju tono onim redoslijedom kojim su zadane. OpenGL barata samo s
najjednostavnijim tipovima podataka vrhovima (engl. verteksima), linijama i
trokutima. Verteks je toka u homogenom 4D prostoru koja oznaava sjecite dviju
linija ili rub jedne. Linija u matematikom smislu odgovara onome to asociramo s
duinom kao najkraom udaljenosti dviju toaka. Svaki sloeniji objekt prikazuje se
kao kompozicija ovih primitiva.
OpenGL ne ovisi o platformi i stoga ima ogranien skup mogunosti kad je rije o
interakciji s korisnikom. Iz tog razloga razvijene su dodatne biblioteke. GLEW
(OpenGL Extension Wrapper) nadopunjuje OpenGL s funkcionalnostima koje su
specifine za pojedinu platformu. GLUT i GLFW imaju slinu funkcionalnost. One
nadoknauju odsustvo sposobnosti za interakciju s korisnikom. Obrauju ulazno
izlazne jedinice, inicijaliziraju kontekst, stvaraju prozor.
3.2. Sjenari (engl. Shader)
Laika definicija sjenara bi bila program koji govori raunalu kako da crta neto na
specifian i unikatan nain. (JiJi) Postoji posebna kategorija jezika koji su raeni za
sjenare. Osnovna podjela je na one koje se prevode prije ili za vrijeme izvoenja
glavnog programa. U OpenGL-u jezik za shadere je GSLS (OpenGL Shading
Language). To je visokoproceduralni jezik temeljen na C-u. Prevodi se za vrijeme
izvoenja. Time se omoguuje interakcija s korisnikom. Postoji vie vrsta sjenara i
svaki ima svoju funkciju u cjevovodu izrade prikaza. Njihove specifine funkcije
usklaene su s funkcijama programirjlivog dijela GPU-a.
3.3. Cjevovod izrade prikaza
Slika 3.1 Cijevovod izrade prikaza
Cjevovod izrade prikaza (Slika 3.1) napravljen je tako da odgovara redoslijedu
izvoenja GPU-a u svrhu postizanja maksimalnog ubrzanja. Glavna prednost
ovakvog pristupa je slanje struja podataka. im se jedan podatak obradi u jednoj
fazi, automatski se alje u drugu. Pritom ga u prethodnoj fazi zamjenjuje novi
podatak.
3.3.1. Generiranje podataka
Sve podatke koji se alju na obradu i iscrtavanje potrebno je uitati u posebnu
strukturu podataka buffer objekt (engl.). Pozivom funkcije glGenBuffer() stvara
se jedan takav objekt, ali tek poziv glBindBuffer alocira memoriju i pridjeljuje stanje
objektu.
3.3.2. Sjenar vrhova (engl. Vertex shader)
Vertex shader obavezna je faza koja kao ulaz prima jedan po jedan verteks toku
u homogenom 4D prostoru. Kao izlaz mora dati takoer jednu vrijednost, odnosno
onoliko vrhova koliko primi toliko e ih i poslati dalje. Jedan sjenar vrhova za svaki
isti ulaz daje i identian izlaz. Stoga, on ima svoju priuvnu memoriju u koju
privremeno pamti parove ulaza i izlaza tako da ako mu se ponovno pojavi neki ulaz
za koji on ve ima izraunatu vrijednost samo e je proslijediti dalje.
Zadatak sjenara vrhova je pretvoriti koordinate objekta u koordinate svijeta. to to
zapravo znai? Zamislimo 3D toku u prostoru koja se nalazi na koordinati (3,0,1).
Ako to elimo iscrtat na ekranu javlja se nekoliko problema Za poetak, u odnosu
na to se mjeri 3, 0 i 1? Gdje je ishodite koordinatnog sustava? U kojem se smjeru
nalazi os x. Postaje jasno da je potrebno definirati neka pravila kojima e se
jednoznano odrediti iscrtavanje elementa na ekran. Definirat e se tri matrice ijim
mnoenjem s koordinatama objekta dobivamo takvu transformaciju. Prva matrica je
matrica modela. Svaki model ima svoj lokalni koordinatni sustav u kojem se nalazi.
Njega je potrebno prebaciti u globalni koordinatni sustav svijeta u kojem se nalazi.
Slijedea je matrica pogleda. Ona definira nain na koji se globalni koordinatni
iscrtavan na sceni. Odreena je trima vektorima
Oite gdje se nalazi promatra
Gledite gdje se nalazi toka u koju je usmjeren pogled
View up vektor- gdje se nalazi gore
Projekcijska matrica definira nain iscrtavanja. Postoje dva osnovna naina, a to su
ortografski i perspektivni. Ako zamislimo snop paralelnih linija kod ortografske
projekcije oni uvijek ostaju paralelni dok se kod projekcijske u daljini spajaju. Glavna
mana ortografske projekcije je odsustvo dubine. Stoga realnom svijetu puno vie
odgovara projekcijska matrica. Ove matrice najbolje je ujediniti u jednu mnoenjem
prije slanja sjenaru radi jednostavnosti i smanjenja broja operacija. Redoslijed
mnoenja je matrica modela, pogleda pa projekcije. Svaki vrh e se u sjenaru
pomnoiti s tom matricom.
3.3.3. Mozaik (engl. Teselleation)
U ovoj fazi dijelovi mogua je podjela ulaznih podataka na manje dijelove.??? Ono
to se time moe postii jest tzv. Razina detalja (eng. Level of Details). to je
promatra blie objektu, kompleksnost i razina detalja se poveava, vrijedi i
obrnuto. To je analogno promatranju objekata u realnom svijetu gdje se razina
detalja koje primjeujemo proporcionalno smanjuje s poveavanjem udaljenosti.
Ovaj sjenar nije obavezni dio cjevovoda. Odvija se u dvije proizvoljne faze koje su
povezane jednom fiksnom fazom. Prva faza je TCS (engl. Tesselation Control
Shader). Tu se postavljaju parametri postupka. U srednjoj (fiksnoj) fazi se na
temelju tih parametera primitiv dijeli na manje. U zadnjoj se fazi generiraju
vrijednosti generiranih verteksa. Postoji posebna vrsta primitiva s kojima barata ovaj
sjenar, a to su tzv. zakrpe (engl. patches).
3.3.4. Geometrijski sjenar
Geometrijski sjenar nije obavezni dio cjevovoda. Kao ulaz prima jedan primitiv dok
mu izlaz moe biti nula ili vie njih. Jedino je u ovoj fazi mogue generirati nove
primitive ili odbaciti neke. Moe se koristiti za veu razinu detalja, ali to mu nije
primarna svrha te ve postoji sjenar s tim zadatkom. Geometrijski sjenar najee
se koristi za renderiranje u razliitim slojevima.
3.3.5. Izrada prikaza
Renderiranje je proces kojim se 3D objekt preslikava na 2D povrinu. Moe se raditi
na vie naina. U OpenGL provodi se rasterizacijom. Rasterizacija obuhvaa dva
koraka. U prvom se za 3D primitiv odreuje gdje e ga se na ekranu tono smjestiti.
Drugi korak pikselu na ekranu na kojem se iscrtava dio tog objekta pridruuje
odgovarajuu boju.
3.3.6. Sjenar fragmenata
Kao to je sjenar vrhova baratao s vrhovima, tako sjenar fragmenata barata s
fragmentima. Fragment je konani produkt rasterizacije. Sjenar na ulaz prima
jedan fragment te mu pridruuje boju i dubinu. U ovoj se fazi radi i preslikavanje
teksture.
3.3.7. Iscrtavanje scene
Za iscrtavanje scene moe se koristit jednostruki ili dvostruki spremnik. Kad se
koristi jednostruki spremnik onda se i iscrtavanje scene i prikaz odvija u jednom
spremniku. Moe doi do usporenog osvjeavanja ekrana ili kombinacije slike kojoj
dio pripada prethodnoj fazi iscrtavanja, a dio slijedeoj. Puno bolja alternativa je
dvostruki spremnik. U jedan spremnik se iscrtava scena, a drugi se koristi za prikaz.
Nakon toga funkcionalnosti ta dva spremnika se mijenjaju. U drugom e se iscrtavati
scena dok e se prvi koristiti za prikaz.
3.4. Struktura programa
Struktura glavnoga dijela programa svih navedenih implementaciji bit e ista te e
se stoga opisati samo jednom.
Pseudokod:
Inicijaliziraj_GLFW()
Inicijaliziraj glew()
Kreiraj_Porozor()
Generiraj_potrebne_objekte();
dok (ne_treba_zatvorit_prozor)
ako je potrebno
generiraj nove objekte()
obnovi_izracune()
prikaziScenu()
oslobodi memoriju
Na poetku programa potrebno je izvriti potrebne inicijalizacije i stvoriti prozor.
Nakon toga generiraju se poetni objekti i uvjeti. Program ulazi u petlju koja se
izvrava sve dok korisnik ne zatvori prozor. U jednom koraku petlje obavljaju se
potrebni izrauni fizikalne simulacije te se ponovno iscrtava scena.
Za sve trodimenzionalne prikaze potrebno je bilo napraviti odgovarajue sjenare
kako bi se objekt mogao smjestiti na scenu. U sklopu ovog rada napravljeni su samo
sjenar vrhova i sjenar fragmenta. Napisana je posebna klasa koja barata s njima.
U toj klasi uitavaju se sjenari, kompajliraju i povezuju sa programom. U glavnom
programu definiraju se vektori modela, pogleda i vektor koji oznaava gdje se na
sceni nalazi gore. Korisnikim tipkama se moe upravljati pogledom, stoga je nuno
definirati ih u glavnom programu. Na temelju njih pravi se matrica pogleda. Matrica
modela objektu samo dodaje 4 koordinatu. Za projekciju odabrana je perspektivna
matrice jer daje realniju sliku. Matrice su pomnoene u glavnom programu te se daju
na ulaz sjenara vrhova. U njemu se svaki verteks mnoi sa tom matricom. Zadatak
sjenara fragmenata je pridruivanje boje. esticama se pridruuje plava boja jer
se simulira voda. Jedan fragment dobiva 4 vrijednosti boja (RGBA). Prva tri
oznauju crvenu, zelenu i plavu komponentu. Slovo A oznauje alfa kanal i koristi
se da za davanje prozirnosti.
Svi programi pisani su u C++ iskljuivo zbog brzine izvoenja. C++ je daleko najbri
objektno orijentirani jezik. Kao razvojno okruenje koriten je Microsoft Visual
Studio 2015. On u sebi ima mogunost ugrade paketa NupenGL koji dolazi sa
slijedeim bibliotekama:
Freeglut
Glew
Glfw
Od navedenih koritene su glew i glfw. Za laki rad s matricama i vektorima
koritena je dodatna biblioteka glm (OpenGL Mathematics), matematika biblioteka
pisana za C++ i OpenGl. Koritena verzija OpenGL-a je 3.1. To je posljednja verzija
koju podrava Intelova grafika kartica na kojoj se se vrtjele simulacije.
4. Simulacija gibanja jednostavnim sustavom
estica
4.1. Ideja programa
Slika 4.1 Fontana (Slikala Samanta Kreti)
Pogledajmo primjer vodoskoka iz kojega voda tee dijagonalno prema gore (Slika
4.1). Izgledom podsjea na ono to se u fizici naziva kosi hitac sloeno gibanje
koje se sastoji od jednoliko ubrzanog i jednolikog gibanja po pravcu u razliitim
smjerovima. to bi se dogodilo ako bi se voda zamijenila pijeskom ili nekim drugim
skupom krute tvari malog volumena i velike brojnosti. Primjeujemo da bi gibanje
ostalo vrlo slino. Ukoliko onda elimo simulirati neko takvo gibanje je li zbilja nuno
raunati povrinsku napetost, tlak vode i viskoznost ili je pak mogue primijeniti
pravila koja bi primijenili i na kosi hitac? Odgovor je prvo, nije nuno raunati.
Mogue je postii zadovoljavajuu aproksimativnu simulaciju tako da na ekranu
prikaemo malene kapljice vode koje se gibaju pod utjecajem gravitacijske sile. Ne
mora tu nuno biti rije o kosom hitcu, moe se primijeniti bilo kakvo sloeno gibanje
ovisno zadatku simulacije. Prva i najjednostavnija implementacija napravljena u
okviru diplomskog rada je simulacija jednog takvog vodoskoka. Fluid e biti
dekomponiran na malene estice i na njega e se primijeniti formule iz dinamike
krutih tijela.
4.1.1. Sustav estica u kontekstu raunalne grafike
Postoji skup objekata koji za razliku od tipinih krutih tijela nema jasno definiranu
povrinu, volumen ili tono zadano karakteristino ponaanje. U takve objekte mogli
bi ubrojiti padaline, vatromet, eksploziju. Sama za sebe instanca takvog objekta
nema veliko znaenje, tek u zajednici sa ostalima dobiva smisao i cijela kompozicija
neto predstavlja. William Reeves je 1983. godine objavio rad Sustav estica
Tehnika za modeliranje klase nejasnih objekata. Uveo je pojam estice kao jedne
instance takvog objekta i sustava estica kao spomenute kompozicije. Iako je
navedeni rad prvi sustavni opis jednog takvog sustava, on se bez imena ve prije
pojavljivao u industriji igara i filmova. Rani sustavi estica nisu podrazumijevali
meusobnu interakciju estica, ali dananji se koriste i za to. Prema Reeveseu1
objekti koje emo predstavit esticama za njega imaju nekoliko osnovnih svojstava.
Nisu predstavljeni skupom poligona te je njihova putanja esto poprilino sloena.
estice imaju sposobnost tzv. raanja i umiranja odnosno kreiranja i unitavanja.
To sustav estica ini dinamikim sustavom kojem se mijenja broj lanova.
Razdoblje u kojem postoji jedan objekt estice naziva se njezinim ivotnim ciklusom
. Sastoji se od triju osnovnih faza
Generiranje estice
ivot
Umiranje estice
Generiranje estice i njezin ivot temelji se na stohastikim procesima. Dio
svojstava odabire se sluajnim generiranjem brojeva to uvelike olakava posao
1 Za vie detalja o navedenoj tematici vidi (Reeves, 1983)
programerima. Generiranje estica moe se obaviti jednom na poetku ili vie puta
tijekom izvoenja algoritma. Kod generiranja estici daju se njezina osnovna
svojstva, a to su:
Poetni poloaj
Iznos i vektor smjera brzine
Vizualna svojstva kao to su boja, veliina i oblik
ivotni vijek
estica tijekom svojega ivota mijenja poloaj u ovisnosti u o vektoru brzine.
Prilikom svake iteracije algoritma ivot joj se smanjuje za jedan. Umrle estice briu
se iz memorije. Kada bi se konstantno generirale nove estice bez prethodnog
brisanja starih, oigledno je da bismo mogli ostati bez resursa u memoriji. Dobro je
stoga definirati neke dodatne uvjete u kojim nam estica vie nee biti zanimljiva.
Jedan od takvih moe biti da se makla s vidljivog dijela scene ili joj se veliina toliko
smanjila da je vie uope ne vidimo. U takvim sluajevima bespotrebno je ekati da
joj se preostali ivotni vijek smanji na nulu da bismo je pobrisali.
Nuno je odrediti nain na koji e se estice iscrtavati na ekran. Najjednostavniji
pristup je iscrtavanje osnovnog primitiva - verteksa (toke). Moe se prikazati i
poligonom s teksturom. Tada je potrebno prilagoditi rotaciju poligona tako da je
normala ravnine usmjerena prema promatrau. Takvom poligonu mogue je
pridruiti i teksturu.
4.2. Struktura estice i koda
Osnovni pseudokod algoritma odgovara prethodno spomenutom. Ono to se
posebno istie je struktura estice koja predstavlja maleni dio volumena fluida.
Modelirana je zasebnom klasom i ima sljedea svojstva koja odgovaraju osnovnim
svojstvima estice navedenim u prethodnom potpoglavlju:
Pozicija u prostoru (r)
Brzina (v)
Veliina
ivotni vijek
Varijabla koja govori ivi li estica vjeno
Pozicija i brzina predstavljene su 3D vektorom. Na poetku programa inicijalizira se
poetna vrijednost pozicije i brzine svake estice. U svakom koraku glavne petlje
generiraju se nove estice te se zatim raunaju nove vrijednosti starih. Nova
vrijednost vektora pozicije i brzine za svaku pojedinu esticu rauna se na sljedei
nain
( t + ) = (t) +
( t + ) = (t) + (t + ) * ;
Akceleracija e iskljuivo biti pod utjecajem sile tee koja djeluje negativno od
smjera osi y. U svakom vremenskom koraku vrijednosti brzina promijenit e se
na nain koji je prikazan slijedeim formulama.
= = + 0 =
= =
= = + 0 =
Nakon to su izraunate nove pozicije, one se spremaju u polje koje e se poslati
spremniku za iscrtavanje. Nakon to se sve nacrta, sve estice koje su pale ispod 0
po os y briu se. Stoga, u poetku broj estica raste, no nakon nekog vremena se
stabilizira. Otprilike jednak broj estica se generira i izbrie u jednom vremenskom
koraku .
4.3. Parametri simulacije
Ovaj algoritam upotrijebiti e se za simulaciju fontane u dva sloja pri emu jedan ide
vie u visinu, dok se drugi prua vie u irinu. Postoji nekoliko osnovnih kontrolnih
parametra
Uestalost generiranja estica
Broj novonastalih estica po jednom generiranju
Veliina vremenskog koraka
Odreivanje ovih parametara bilo je eksperimentalno. Ne postoji raunski nain za
odrediti sve parametre jer dosta toga ovisi i o jaini grafike kartice i radnoj memoriji
kompjutora. Kao dobar vremenski razmak pokazao se 0.01. Dovoljno je malen da
simulacija ne eksplodira, a opet ne previe da bi znatno usporio. Svako 4 koraka
glavne petlje generira se nova populacija veliine 80, od ega 2/3 idu u donji, a 1/3
u gornji sloj fontane. Sve estice poinju gibanje u ishoditu O(0,0,0), ali svaka
dobiva vektor brzine u razliitom smjeru. Orijentacija u odnosu na osi x i z odreuje
se stohastiki. Apsolutna vrijednost vektora brzine razliitih estica istog sloja
relativno je slina uz male varijance kako bi se izbjegao artificijelan izgled simulacije.
Nije odreena apsolutna vrijednost ivotnoga vijeka jedne estice. esticu emo
proglasiti mrtvom ukoliko nam vie nije vidljiva, a to se dogaa kad vrijednost y
komponente padne ispod 0. Smatra se da je tada ispod razine vode u fontani te je
ne moemo uoiti. Na slici 4.2 moe se vidjeti konaan produkt implementacije.
Slika 4.2 Prikaz fontane
4.4. Prednosti i nedostatci ovakvog pristupa
Osnovna prednost ovakvog promatranja jest brzina kojom se odvijaju izrauni, pa
samim time i cijela simulacija. Kod izrauna vrijednosti jedne estice potrebni su
samo podaci pohranjeni u toj estici. Sloenost jednog prolaska petlje jest O(n) pri
emu je n broj estica. Kod jednostavnijih simulacija ovakav naivan pristup esto je
zadovoljavajui. Meutim, ukoliko elimo prikazati povrinu fluida koja se mie,
uviamo kako ovaj pristup nikako nije dobar.
5. Aproksimacijska visinska mapa
Simulacija esticama nije dobar odabir ukoliko se eli pokazati samo povrina nekog
fluida (ocean, rijeka, jezero). Bespotrebno kompliciranje raunski moe biti
zahtjevno, a u grafikom smislu nee pretjerano uljepati simulaciju. Ako smo
zainteresirani za animaciju dvodimenzionalne plohe, bilo bi pretjerana simulacija
cijelog tijela vode. (Bridson & Muller-Fischer, 2007) U tom sluaju moe se koristiti
algoritam aproksimacije visinskom mapom. Jednostavan je za implementirati i
postie vizualno atraktivne rezultate.
Povrina koja se simulira podijeli se na 2D mreu. to je mrea gua, to e
vizualizacija biti detaljnija. Za svaki element te mree pamte se slijedei podaci
visina (u) tog stupca i brzina kojom se visina u stupcu mijenja (v). Za poetnu
vrijednost moe se postaviti oblik mree kakav god se eli. Pseudokod za mijenjanje
izgleda mree preuzet je iz SIGGRAPH-ovog teaja za simulaciju fluida. (Bridson &
Muller-Fischer, 2007)
Pseudokod:
za svaki i,j
v[i,j] = (u[i-1,j] + u[i+1,j] + u [i,j-1] + u[i,j+1]) / 4 u[i,j]
v[i,j] * = tezinski_faktor_manji_od_jedan
u[i,j]+=v[i,j]
U literaturi se kao teinski faktor za smanjenje brzine predlae 0.99. Kod
implementacije algoritma taj se broj pokazao prevelik i s njime bi nakon nekoliko
iteracija simulacija eksplodirala (Slika 5.1). Idealnim se pokazao faktor koji iznosi
0.68.
Slika 5.1 Eksplozija simulacije za prevelik parametar priguenja brzine
Treba definirati to se dogaa kod rubnih uvjeta, tonije kada su i i k manji od nula
ili vei od maksimalne duine (irine). Najjednostavnije je tada ih prilagoditi
vrijednosti koja je do njih tako da u[-1,j] = u[0,j] i analogno tome za sva 4 ruba.
Konaan izgled simulacije moe se vidjeti na slici 5.2.
Slika 5.2 Simulacija za razliite poetne funkcije
5.1. Implementacija
Cilj programa je simulirati vodenu povrinu koja moe poinjati iz nekoliko razliitih
poloaja. Moe biti skroz mirna za poetak ili uhvaena u gibanju. Program e
omoguiti interakciju s korisnikom na nain da korisnik moe tijekom izvoenja birat
poetni izgled ili povlait mi po vodi i time uzburkavati povrinu. Na poetku se
definiraju nuni parametri za izvoenje simulacije, a to su irina i duljina plohe te
granulacija mree. Visinu u i brzinu v se pohranjuje u jednodimenzionalnu strukturu
podataka vektor. Ako se eli pristupiti elementu koji se nalazi na mjestu i i j, indeks
e biti i*broj_celija_duljine + j.
Korisnik na simulaciju moe utjecati preko mia i tipkovnice. To je ostvareno
pomou GLFW standardnih funkcija za baratanje s takvim dogaajima. Definiraju
se funkcije koje se pozivaju kada korisnik stisne tipku na tipkovnici ili miu. Ukoliko
korisnik eli ponovno pokrenuti simulaciju dovoljno je kliknuti na tipku S. Kako bi se
omoguilo promatranje razliitih poetnih uvjeta, odabirom broja na tipkovnici bira
se funkcija koja e postaviti inicijalnu visinu cijele mree. Tipke gore, dolje, lijevo i
desno slue za pomicanje oita. Gledite je fiksno i nalazi se u ishoditu 3D
koordinatnog sustava. Osim toga, ostvarena je jo jedna funkcionalnost korisnik
povlaenjem mia po ekranu moe uzburkati povrinu. Od trenutka kada korisnik
spusti lijevu tipku mia pa do trenutka kad je otpusti, sve toke na ekranu koje obie
pamte se u za to namijenjeno polje. Nakon toga provodi se transformacija
koordinata ekrana u koordinate svijeta. Rubovi ekrana odgovaraju rubovima
povrina, a toke u sredini raunaju se tako da omjer ostaje isti. Primjerice, klikne li
se na toku koja na ekranu odgovara 90% irine i 10% visine, i na simulaciji e se
odabrati toku koja odgovara tom omjeru. Problem je to se u sluaju kada korisnik
prebrzo mie mi po ekranu ne uspiju uhvatiti sve toke. Zato se izmeu svakoga
para toaka povlai imaginaran pravac te se sve elije koje lee na tom pravcu i
nalaze se izmeu zadanih toaka takoer ukljuuju. Svim takvim tokama mijenja
se visina to se onda dalje propagira kroz simulaciju (Slika 5.2).
Slika 5.3 Valovi uzrokovani interakcijom s korisnikom
5.2. Dodavanje estica i njihova kolizija
Kako bi se simulacija uinila zanimljivijom, dodane su i estice koje bi trebale
simulirati vodu koja pada na povrinu. estice su napravljene na nain koji je opisan
u prethodnim poglavljima. Jedino je dodatno potrebno omoguiti provjeru dolaska
estice do povrine vode. Svaki put kada se estici obnovi pozicija, potrebno je na
mrei nai koji indeks odgovara poziciji estice koju obnavljamo. Zatim se
provjerava visina vode na tom indeksu. Ukoliko se estica nalazi ispod vode, brie
se. Zatim se simulira sila kojom je ta estica djelovala na slian nain kao i kad je
korisnik kliknuo mi (Slika 5.3).
Slika 5.4 Interakcija mape sa sustavom estica
5.3. Prednosti i mane visinskih mapa
Glavna prednost uporabe visinskih mapa je brzina izrauna. Svaka elija za svoju
vrijednost koristi samo 4 neposredna susjeda. Optereenje memorije takoer nije
veliko jer se pamte podaci samo povrine, za razliku od eulerovog ili lagrangeovog
pristupa. Mana ovog pristupa je ogranienost izbora toka fluida. Mogu se simulirati
relativno mirni uvjeti jer se u svakom trenutku na jednoj eliji moe nalaziti samo
jedna razina vode. Rjeenje tog problema bilo bi dodati sustav estica na kritinim
tokama gdje pretpostavljamo da bi se fluid trebao burnije ponaati. Ovo
pretpostavlja odreeno apriorno znanje o problemu koji simuliramo i gdje bi se fluid
mogao ponaati na specifian nain.
6. Metoda zaglaene hidrodinamike estice (SPH)
6.1. Osnove SPH
Kada je 1977. godine izumljena metoda zaglaene hidrodinamike estice (SPH),
nije bila namijenjene CFD. Monaghan i Gingold te Lucy metodu su razvili sa svrhom
rjeavanja astrofizikih problema. Meutim, metoda se pokazala puno brom od
Eulerove i pogodnijom za simulaciju turbulentnijih tokova. Nije dugo trebalo da
tehnika pronae svoj put do CFD-a.
U sreditu metode nalazi se estica kao predstavnik malog dijela volumena fluida
te nositelj makroskopskih svojstava kao to su brzina, gustoa, tlak. Ova tvrdnja
korijene vue iz ranije spomenute teorije kontinuuma koja osigurava postojanost
makroskopskih svojstava i na ovako malom redu veliine. SPH kae da vrijednost
svojstva pojedine estice moemo dobiti zbrajanjem svojstava susjednih estica
pomnoenih s odgovarajuom zagaujuom funkcijom (kernelom). Matematika
podloga te tvrdnje bit e objanjenja i dokazan u nastavku. Neka je dana funkcija
f(x). Prema definiciji, jedno od osnovnih svojstava delta (dirac) funkcije () jest:
Prebacit emo to u 3D domenu i funkciju f(x) zamijeniti s nekim svojstvom A(r) nad
volumenom V. Imamo sljedee
() ( ) = ()
Pri emu su r i r' vrijednosti unutar volumena V. Dirac delta funkcija zamjenjuje se s
kernel funkcijom W koja djeluje na radiju su h.
() ( , ) = ()
Prema (Nataesescu & Gavrila, 2011) kernel je funkcija sa slijedeim svojstvima:
( )
= 1
0
( ) = ( )
Kernel je, takoer simetrina funkcija koja je uvijek vea ili jednaka 0. Kada ide iz
negativne beskonanosti u 0 mora biti monotono rastua, dok je od 0 do pozitivne
beskonanosti monotono padajua. Najveu vrijednost poprima u 0 odnosno kada
je r=r'.
Ranije spomenuto svojstvo A(r) sada e se zapisati u diskretnoj domeni za svaku
pojedinu esticu i. Pri tom se u obzir uzima injenica da je =
Ako se eli izraunati neko svojstvo A estice i, potrebno je zbrojiti to isto svojstvo
svih susjednih estica zaglaeno odgovarajuom funkcijom.
6.2. Osnovni algoritam
Algoritam koji je implementiran temelji se na radu Smoothed Particle
Hydrodynamics on GPUs autora Takaira Harade, Seiichi Koshizukaa i Yoichira
Kawaguchija. (Harada, Koshizuka, & Kawaguchi). Navier- Stokesova jednadba u
Lagrangeovom sustavu daje nam akceleraciju pojedine estice.
Algoritam e se provoditi u tri koraka. U prvom e se izraunati sve komponente i
ukupna akceleracija. Zatim e se vektor brzine promijeniti za iznos akceleracije. U
konanici e se izraunati nove pozicije estica tako da nova brzina nadoda vektoru
pozicije. Akceleracija e se mijenjati zbog triju komponenti. Gravitacija e djelovati
u smjeru sile tee, tlak e gurati u smjeru negativnog gradijenta s mjesta viega na
mjesto niega tlaka. Viskoznost e djelovati u smjeru akceleracije.
6.2.1. Gustoa estice
Kako bi se izraunala gustoa estice, svojstvo A(r) zamijeniti e se sa .
6.2.2. Tlak
Kad se izraunala gustoa svake estice, moe se krenuti na izraun tlaka. Ovdje
e se koristiti svojstvo linearnosti derivacije pa se
moe pisati kao
Rauna se
U pojedinoj estici tlak raunat e se kao k * (( 0). K je konstanta plinova, je
trenutna gustoa, a 0 je gustoa pri mirovanju.
6.2.3. Viskoznost
Zadnje se rauna akceleracija zbog viskoznosti koja iznosi . I ovdje e se
iskoristi svojstvo linearne derivacije koje kae da je
Slijedi:
6.3. Odabir kernel funkcije
Za kernel funkciju odabrana je funkcija (Harada, Koshizuka, & Kawaguchi)
Pseudokod algoritma je slijedei:
Za svaku cesticu:
Izracunaj gustocu
Za svaku cesticu:
Izracunaj akceleraciju zbog promjene tlak
Izracunaj akcelraciju viskoznosti
Izracunaj ukupnu promjenu brzine
Povecaj brzinu
Promjeni polozaj cestice
6.4. Implementacija rubnih uvjeta
Potrebno je definirati nain na koji se fluid ponaa kad se susretne s podlogom.
Odbija li se ili pak ostaje mirovati? Za poetak, iz dinamike je preuzeta ideja
savrenog elastinog sudara. Pretpostavka je bila da bi trebalo funkcionirati dobro
s obzirom da taj zakon jami ouvanje koliine gibanja i kinetike energije.
Implementacija je bila sljedee kod svake kolizije estice s rubom promjeni se
smjer parametra brzine okomitog na plohu sudara. Odmah pri prvom pokretanju bilo
je jasno da ideja nije bila dobra. U realnim uvjetima fluidi se nikad ne odbijaju
savreno elastino, dio energije gubi se pri sudaru. Simulacija je poslije svakog
sudara bivala sve kaotinija i kaotinija dok u konanici fluid nije izgubio oblik i
estice su se kaotino gibalo po ekranu.
Slika 6.1 Kaotino gibanje po ekranu
Nakon tog neuspjeha trebalo je pronai fiziki realnije rjeenje. Kada bi se u razliite
slojeve vode koja tee dodao obojani fluid, mogla bi se promatrati brzina toka u
razliitim slojevima. Tada bi se primijetila zanimljiva injenica, a to je da se dijelovi
fluida tik uz podlogu koja miruje ne kreu. Ta se pojava naziva uvjetom bez klizanja
(engl. No-slip condition). Uzrok tome je viskoznost fluida. To je ujedno i sljedei
pokuaj implementacije sudara estice sa rubom. Sada svaki put kada neka estica
doe do ruba, brzina joj se postavlja na nul vektor. Simulacija se pokazala
zadovoljavajuom. Jedini problem je to ponekad pojedina estica takne rub i
ukoliko oko nje nema nekog susjeda da djeluje na nju, moe zaglavit zalijepljena
tamo.
Slika 6.2 Lijepljenje estica za rubove
To se pokualo rijeiti tako da se pri sudaru s vrstom podlogom na nulu postavi
samo ona komponenta brzine koja je okomita na udarenu plohu. To je dovelo do
drugog problema. estice su imale sklonost etati po rubu lijevo i desno od toke
sudara, ali se izbjeglo lijepljenje estica s rubova.
6.5. Ubrzavanje algoritma
Asimptotska sloenost opisanog algoritma je (2). Poveavajui broj estica, ija
je veliina nuan uvjet to realnije simulaciji, brzina simulacije znatno otpada. No,
mogue je ostvariti znatno ubrzanje uvoenjem susjedstva. Kada bi svaka estica
znala svoje susjede, ne bi morala pretraivati itav prostor rjeenja ve samo one
koje utjeu na nju. Kontrolni parametar h govori granicu kada estice prestaju
djelovati jedna na drugu. Kada bi se itav prostor simulacije podijelio na elije
veliine parametra h, svaka estica znala bi da joj se susjedi mogu nalaziti ili u
vlastitoj eliji ili u elijama koje su joj susjedne. Ako je broj tih elija N znai da bi
se u svakoj u prosjeku nalazilo
estica. Iz tog proizlazi da bi prosjean broj
susjeda jedne elije bio 8
. Oznaimo taj broj sa a. Sada bi sloenost jednog
prolaska algoritma bila O(aN).
Ubrzanje e biti na tetu memorijskog prostora. Na poetku programa potrebno je
inicijalizirati reetku koja e se pri svakom prolasku glavne petlje puniti indeksima
estica koji se u prostoru nalaze na mjestu te elije. Poslije, kod traenja susjeda
pojedine estice, pogledat e se vrijednosti zapisane u toj eliji, i po jednoj manje
(vie) u svim smjerovima.
6.6. Problemi i utjecaj parametara
Glavni problem pri implementaciji SPH bio je namjetanje parametara. Navier-
Stokesove jednadbe iznimno su osjetljive na parametre. ak i promjena od 0.01
moe oznaavati kljunu razliku izmeu uspjene simulacije i neuspjene.
Parametri koji su zadavali najvie problema bili su 0 i k. Prvi je gustoa fluida pri
mirovanju, a drugi konstanta. Oni direktno utjee na tlak koji je u simulaciji definiran
kao k( 0). Ukoliko tlak kojim estice djeluju jedna na drugu bude prevelik,
simulacija se raspadne po ekranu i eksplodira. S druge strane, ukoliko je premalen,
estice plove jedna prema drugoj i cijela se simulacija urui sama u sebe.
Drugi problematian parametar bio je odreivanje mase pojedine estice. Ukoliko
se postavi premalena masa, estice se kaotino gibaju po ekranu te se simulacija
vie moe primijeniti na ponaanje plinova nego na ponaanje tekuina.
Parametar h odreuje podruje koje se zaglauje kernel funkcijom. Premalen
parametar h uzrokuje to da niti jedna estica ne djeluje jedna na drugu i cijela se
simulacija urui u par toaka na ekranu. Prevelik h znatno poveava vrijeme
raunanja jer vie estica smatramo susjednim te za svaku moramo obaviti
potrebne proraune gustoe, tlaka i viskoznosti.
Parametar vremenskog koraka odreuje diskretizaciju vremenske domene. On
mora biti dovoljno velik da simulaciji ne bi bila previe usporena. Takoer mora biti
dovoljno malen kako bi osigurao realno ponaanje simulacije. U obzir se treba
uzeti injenice da se sve diferencijalne jednadbe aproksimiraju odgovarajuim
funkcijama. to je manja granulacija diskretizacije, rezultati e biti blii stvarnim
rjeenjima.
6.7. Simulacije
Napravljene su dvije simulacije. Prva prikazuje kvadrat fluid koji se poinje gibati
pod utjecajem sile tee. Rezultat se moe vidjeti na slici 6.3.
Slika 6.3 Prikaz prve simulacije prije i poslije
Druga simulacije poinje sa praznim ekranom. U svakom koraku glavnog algoritma
na ekranu se generira jedna estica fluida. Rezultat je na slici 6.4.
Slika 6.4 Prikaz druge simulacije prije i poslije
Zakljuak
Kao znanost kompjutorska dinamika fluida jo je uvijek u velikom razvoju. Teko je
ne primijetiti da je kroz povijest njezin razvoj bio ogranien poznavanjem
diferencijalnih jednadbi. Najbolje rjeenje i najbolji opis uvijek je bio jednak ili loiji
od najboljeg postupka baratanja i rjeavanja diferencijalnih jednadbi.
Simulacija fluida nije nimalo naivan i jednostavan postupak. Njegova realnost ide
nautrb vremena i raunalnih resursa. ak je i za jako snana raunala
problematina. Potrebno je razumjeti da danas jo uvijek ne moemo imati sve. Sa
snagom dananjih raunala i tehnikama koje se koriste nije mogue postii
realistinu, fizikalno tonu, vizualno privlano animaciju fluida koja se izvodi i
renderira u realnom vremenu. Kljuno je, stoga, na poetku identificirati razloge
zato uope simuliramo fluid. Ako je rije o simulaciji za igru, sigurno e naglasak
biti na izvoenju u realnom vremenu. Simulacija filmskih efekata e, s druge strane,
zahtijevati to ljepi izgled bez obzira na vrijeme koje je potrebno utroiti da bi se
dobilo. Ako se pak eli simulirati rad motora i protok fluida u njemu, imperativ e
imati fizikalna tonost. Svaki put kad pojaamo neku komponentu simulacije i damo
joj veu vanost, to e biti nautrb ostalih.
Literatura
[1] Andrei, . (2014). Temelji mehanike fluida. Zagreb: Sveuilite u Zagrebu - Rudarsko- geoloko- naftni fakultet.
[2] Ashford, O. (1985). Proheptor Profesor: The Life and Work of L. E. Richardson.
[3] Braley, C., i Tech. (n.d.). Fluid Simulation For Computer Graphics: A Tutorial in Grid Based and Particle.
[4] Bridson, R., & Muller-Fischer, M. (2007). Fluid Simulation SIGGRAPH 2007 Course Notes.
[5] Harada, T., Koshizuka, S., i Kawaguchi, Y. (n.d.).
[6] JiJi, V. (n.d.). CSCI 480 Computer Graphics.
[7] McDonough, J. M. (2009). Lectures in elementary fluid dynamics: Physics, Mathematics and Applications. Lexington.
[8] McKee, S., Tome, Tome, M., Ferreira, V., Cuminato, J., Castelo, A., Mangiavacchi, N. (2007). The MAC method.
[9] Nataesescu, V., i Gavrila, L. (2011). About smoothing functions used in SPH methods. Brasov.
[10] avar, M., Virag, Z., i Dijan, I. (2014). Mehanika fluida (Skripta). Zagreb.
[11] Shrainer, D., Sellers, G., Kessenich, J., i Licea-Kane, B. (n.d.). OpenGLProgramming guide, Eight Edition. Michigan.
[12] upi, Marko i Mihajlovi, eljka Interaktivna raunalna grafika kroz primjere u
OpenGL-u, 2016 , http://www.zemris.fer.hr/predmeti/irg/knjiga.pdf
[13] Bao, Y. B., Meskas J., Lattice Boltzman Method for Fluid Simulation, 2011.
http://www.zemris.fer.hr/predmeti/irg/knjiga.pdf
Saetak
Naslov: Simulacija fluida sustavom estica
Najprije su prouena osnovna fizikalna svojstva fluida te jednadbe po kojima se
fluid giba. S obzirom da je za rad koriten i OpenGL prouene su njegove osnove.
Rad se pozabavio trima osnovnim metodama kojima se postie animacija fluida, a
koje su izvodive u realnom vremenu. Prva je bila jednostavni sustav estica bez
interakcijskih sila meu pojedinim esticama. Sljedea je bila aproksimacijska
visinska mapa koja je zatim integrirala i prvu metodu u svoj rad. Na kraju je
implementiran jednostavni SPH simulator.
Kljune rijei: fluid, SPH, viskoznost, gustoa. tlak, estica, visinska mapa, kernel
funkcija, zaglaivanje
Summary
Title: Fluid simulation using particle system
Firstly basic physical attributes of fluids have been observed. Differential equations
that describes fluid motion were also took in consideration. Considering the fact that
OpenGL have been used for solution programming, the basic concepts of that
programming language were described. There are there three methods that were
implemented and described. Each one can run in real time. First method was simple
particle system which doesn't calculate particle's interaction forces. The next one
was heightmap. In the end simple SPH simulator was implemented.
Keywords: fluid, SPH, viscosity, density, pressure, particle, heightmap, kernel
function, smoothing
Privitak
Programska potpora napravljena u sklopu teme diplomskog rada priloena je na
CD-u.