of 56 /56
SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA DIPLOMSKI RAD br. 1236 SIMULACIJA FLUIDA SUSTAVOM ČESTICA Marta Poštenjak Zagreb, lipanj 2016.

# SIMULACIJA FLUIDA SUSTAVOM ČESTICA

Embed Size (px)

### Text of SIMULACIJA FLUIDA SUSTAVOM ČESTICA

• SVEUILITE U ZAGREBU

FAKULTET ELEKTROTEHNIKE I RAUNARSTVA

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.

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

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.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

• 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

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

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.

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

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,

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

• 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

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.

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

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.

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.

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

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

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

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

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.

Documents
Documents
Documents
Documents
Documents
Documents
Documents
Documents
Documents
Documents
Education
Documents
Documents
Documents
Documents
Documents
Documents
Documents
Documents
Documents
Documents
Documents
Documents
Documents
Documents
Documents
Education
Documents
Documents