Nástin problému Výběr vhodného algoritmu při simulacích mnoha částic Částice – částice anebo částice – síť? Když částice – částice, tak jaký algoritmus? Není zbytečné simulovat interakce všech částic se všemi částicemi? Odpověď : „Ano je. Všechno jde dělat chytře místo složitě“
Proč stromové algoritmy Základní myšlenka: Máme-li velkou skupinu částic, která je velmi vzdálená od ostatních částic, pak silový příspěvek této skupiny můžeme aproximovat silovým příspěvkem jedné částice s hmotnosti rovnou součtu hmotností částic ve skupině a s hmotným středem umístěným v hmotném středu skupiny částic.
Schéma rádiusu buňky
První příklad Pro velikou vzdálenost obou skupin částic a malé úhly theta se nevyplatí provádět všechny čtyři interakce červená-modrá, červená-červená, modrá-červená, modrá-modrá, ale jak je znázorněno vedle rozdělíme simulovanou plochu na čtyři kvadranty a napočítáme pouze dvě interakce modrá-červená a červená-modrá.
Konstrukce stromu při konstrukci stromu nejdříve uzavřeme prostor částic do čtverce (obdélníku), který je dostatečně velký, aby v něm částice během celé simulace zůstaly – root cell poté začneme čtverec dělit na menší a menší pravoúhelníky simulací v 1D tak z rodičovské buňky vzniknou dvě stejné děti – dvě buňky – binarytree, ve 2D vzniknou 4 buňky (obvykle čtverce) – quadtree a ve 3D z jedné rodičovské buňky vznikne 8 menších, každá o objemu 1/8 rodičovské buňky – octtree takto postupujeme rekurzivně tak dlouho, dokud nemáme každou částici zvlášť v jedné buňce
Základní názvosloví Definice oblasti: Oblast je část simulované plochy a to vždy část obdélníková. Je rozdělena na 4 kvadranty. Tato oblast může a nemusí být nadále rozdělena na další 4 pod- oblasti, každá podle příslušného kvadrantu. První oblastí je celá simulovaná plocha. Definice listu: Listem rozumím poslední oblast stromu, na které už nenavazují žádné další oblasti.
Vysvětlující obrázky Quadtree - každý uzel se rozdělí na 4 stejné poduzly Quadtree – prostor dělíme tak dlouho, dokud není každá částice v buňce sama
Výpočty – část 1 Celková hmotnost a umístění hmotného středu je jednoduché pro listy – je to přesně ta hodnota a pozice částice uvnitř listu Pro uzly jsou tyto hodnoty určeny z jejich subbuněk ale pouze pro první úroveň! ( pro 2D jsou tak tyto hodnoty určeny ze 4 subbuněk, ve 3D z 8)
Výpočty – část 2 Teď už můžeme počítat interakce částic – ty budou dvou druhů a)výpočet silových příspěvků od individuálních částic, které jsou blízko naší částici b)výpočtem silového příspěvku od hmotného středu sady buněk stromu, které jsou velmi vzdálené od naší částice To, jestli vybereme metodu a nebo b záleží na parametru ca, který je pevně zvolen Při výpočtu interakcí postupujeme od kořene rekursivně k poduzlům a listům. Pro snížení výpočtů je dovoleno, mít na každé úrovni jen maximálně 9 buněk, které potřebují dále rozdělit. Výpočet další úrovně se pak redukuje na 27 operací (2*3*2*3-9). Na každé úrovní je pak výpočetní náročnost 27 O(1).
Zhodnocení hloubka stromu je určena jako min(b, log(n)) a celková náročnost je tedy O(n min(b, log(n))) toto zjednodušení dokáže velmi zredukovat počet výpočtů až o několik řádů !!! (v závislosti na počtu částic) stromové kódy jsou přesnější než metoda částice – síť, ale méně přesné než metoda částice – částice vyžadují navíc pomocné uskladnění dat Algoritmus Barnes – Hut využívá stromové struktury a je hojně užíván zejména v astrofyzice
Dodatek 1 – Barnes - Hut Algoritmus 1.Vytvoř quadtree nebo octtree 2.Postupuj ve směru od listů ke kořeni a poč í tej hmotnost a hmotný střed pro každý uzel 3.Postupuj směrem od kořene k listům a pro každou č á stici spoč í tej s í lu během postupu Bod 2 můžeme schématicky rozepsat: Poč í tej aproximace (N) pokud N je list pak konec; pro každý subuzel n uzlu N proveď -> poč í tej aproximace (n) M:=0, cm:= (0,0) Pro každý subuzel n uzlu N proveď M:=M + hmotnost n, cm:= cm + hmotnost n*pozice n konec cm:=1/M *cm Hmotnost N := M Pozice N := cm konec
Dodatek 2 – Paralelní výpočty Problém mezi komunikace částic mezi procesory Malá datová propustnost může být problém mezi počítači s malou pamětí Vytvoří se lokální stromy na každém procesoru A posílají se pouze základní informace o stromech Velice výhodné při počítání obrovského počtu částic (až Ukázka klíče buňky(listu)
Odkazy /7F A83-44EF-AF CA296EA4/0/chapter_9.pdf hu.pdf?key1=369033&key2= &coll=GUIDE&dl=GUIDE, ACM&CFID= &CFTOKEN=