http://www.youtube.com/watch?v=RSak5h7by74&feature=related
Ja ostatnio zmajstowałem podobną symulację opartą na punktach masowych
połączonych sprężynami. Tutaj, wydaje się, 'sprężyny' reagują tylko na
zbytnie zbliżenie obiektów. Jak realizuje się interakcję z punktami
otaczającymi ? Jakieś tablice indeksujące cząstki w okolicy? Bo
algorytm wyszukiwania N-najbliższych cząstek jest przecież za wolny. A
optymalizacja wydaje się niezła, zważywszy, że jest to java.
Z tym, że chyba żadnych skomplikowanych struktur charakterystycznych
dla cieczy się nie uzyska, jak na przykład karman vortex, co da się
łatwo napisać warunkując spełnienie równania ciągłości (metoda
SIMPLE).
R-Tree ?
Ogólniej?
http://gist.cs.berkeley.edu/gist1.html
Pozdrawiam
--
Mateusz Loskot, http://mateusz.loskot.net
Charter Member of OSGeo, http://osgeo.org
Chyba zale�y jak "g�sto" s� u�o�one cz�stki. Je�li cz�stki s� umieszczone w
dwuwymiarowej tablicy NxM i du�o (np. 90%) element�w tablicy jest zajmowanych
przez jak�� cz�stk�, to indeksowanie nie wiele pomo�e.
Pozdrawiam
--
Wys�ano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Og�lnie podejsc czasteczkowych (lagraznzowakch)jest mnostwo i nie sa
bynajmniej dzielem oststnich lat, choc w wiekszosci zastosowan
"klasyczne" rozwiazywanie numeryczne rownan hydrodynamiku metodami
eulerowskimi i (semi)lagranzowskimi jest nie do zastapienia.
Poczytaj np. http://en.wikipedia.org/wiki/Smoothed-particle_hydrodynamics
http://en.wikipedia.org/wiki/Dissipative_particle_dynamics
a nawet
http://en.wikipedia.org/wiki/Molecular_dynamics
W dwuwymiarowej hydrodynamice stosuje sie tez fajna forme modelowania
przeplywow pray pomocu specyficznych "czastek", tzw. wirow punktowych,
nazywa sie to "vortex methods" alo "discrete vortex methods", np:
http://www.cambridge.org/us/catalogue/catalogue.asp?isbn=9780521061704
Pozdrawiam
SM
Nie bylbym pewien. R-Tree jest dobre dla statycznej geometri gdzie raz
budujemy drzewo. Tutaj przy kazdej iteracji musimy drzewo przebudowac.
Ale z drugiej strony nie widze tez nic sensowniejszego. I tak
zbudowanie za kazdym razem drzewa bedzie szybsze niz liczenie tego
jakims brute forcem. Ale np moze juz nie byc szybsze niz poprostu
podzielenie przestrzeni na MxNxK sektorow. Gorsze niz R-tree ale nie
wymaga generowaniad drzewa. Trzeba by potestowac oba podejscia i
zobaczyc ktore szybsze.
Cząsteczka mogłaby być strukturą zawierającą masę,pozycje i prędkość.
Wydaje się, że indeksowanie w tabeli będzie szybsze. Zwłaszcza, że
indeksuje się w zasadzie tylko liczbę cząsteczek w danej przestrzeni
(gęstość). Problemem tu jest wykonanie operacji dzielenia i
'rzutowania' współrzędnych symulacji, na komórki tabeli. Dalej na tym
operuje się kernelem konwolucyjnym znajdując gradienty.
Dzielenie typu int można zastąpić przesunięciem bitowym, dlatego
dobrze, aby wielkość symulacji podzielona przez wielkość tabeli była
potęgą 2, podobnie dobrze, aby wymiary tabeli były potęgami 2, a
dostęp do nich był sekwencyjny.
Spotkałem się ze stwierdzeniem, że dla dużych tablic wymiar będący
potęgą 2 jest obarczony dużym zwolnieniem prędkości. Czy ktoś wie
dlaczego ?
Jeśli chodzi o to podejście to postaram się napisać algorytm w c++ i
podrzucić tu kod. Może uda się to jakoś wspólnie zoptymalizować.
> Jeśli chodzi o to podejście to postaram się napisać algorytm w c++ i
> podrzucić tu kod. Może uda się to jakoś wspólnie zoptymalizować.
Fajne zadanie, sam bym się pobawił gdybym miał czas :)
Na początku optymalizacją zapisu się nie przejmuj za bardzo, napisz
porządnie, bez błędów, żeby był ładny efekt. Jak zacznie działać
to dopiero wtedy można pomyśleć o optymalizacji.
Pozdrawiam
http://gdlpogoda.republika.pl/ParticleSimulation.pdf
Po części jest to coś przeczytane ( PIC - particle in cell ), po
części powymyślane. Proszę o sugestie, co tu pozmieniać i czy to się
nadaje na implementację, czy może należy coś dopracować w teorii.
Zazdroszczę zabawy efektami cząsteczkowymi :) Niestety nie mam czasu
aby samemu coś napisać :)
Pozdrawiam
tabele vs tablice
Pozdrawiam
--
Mateusz Loskot, http://mateusz.loskot.net
pl.comp.lang.c FAQ: http://pl.cpp.wikia.com/wiki/FAQ
C++ FAQ: http://parashift.com/c++-faq-lite
Racja, ale jesli tylko to rzucilo sie w oczy jako blad, to w takim
razie nie jest zle.
Przeleciałem tekst szybko do kawy, nie analizowalem głebiej,
więc ostrożnie ;-)