Implementacja modelu FHP w technologii NVIDIA CUDA

Podobne dokumenty
Katarzyna Jesionek Zastosowanie symulacji dynamiki cieczy oraz ośrodków sprężystych w symulatorach operacji chirurgicznych.

Implementacja modelu FHP w technologii NVIDIA CUDA

Modelowanie komputerowe dynamiki płynów Maciej Matyka Instytut Fizyki Teoretycznej

Symulacje komputerowe dynamiki płynów Model FHP i przepływ Poiseuille a

Ruch drogowy, korki uliczne - czy fizyk może coś na to poradzić?

Programowanie Równoległe wykład 13. Symulacje komputerowe cieczy LBM w CUDA. Maciej Matyka Instytut Fizyki Teoretycznej

Symulacje komputerowe dynamiki płynów LBM i Karman vortex street

Modelowanie i Animacja

WYDZIAŁ LABORATORIUM FIZYCZNE

Obliczenia inspirowane Naturą

Rozkłady statyczne Maxwella Boltzmana. Konrad Jachyra I IM gr V lab

OPIS PRZEDMIOTU/MODUŁU KSZTAŁCENIA (SYLABUS)

Turing i jego maszyny

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1

Szablony funkcji i szablony klas

Modelowanie wieloskalowe. Automaty Komórkowe - podstawy

Metody rozwiązania równania Schrödingera

Wprowadzenie do UML, przykład użycia kolizja

CUDA część 1. platforma GPGPU w obliczeniach naukowych. Maciej Matyka

mechanika analityczna 1 nierelatywistyczna L.D.Landau, E.M.Lifszyc Krótki kurs fizyki teoretycznej

Podstawy fizyki. Wykład 3. Dr Piotr Sitarek. Katedra Fizyki Doświadczalnej, W11, PWr

O procesie Wienera. O procesie Wienera. Procesy stochastyczne Wykład XV, 15 czerwca 2015 r. Proces Wienera. Ruch Browna. Ułamkowe ruchy Browna

Dla człowieka naturalnym sposobem liczenia jest korzystanie z systemu dziesiętnego, dla komputera natomiast korzystanie z zapisu dwójkowego

Obliczenia inspirowane Naturą

Arytmetyka liczb binarnych

Ruchome Piaski v1.0. Maciej Matyka

Inżynierskie metody numeryczne II. Konsultacje: wtorek 8-9:30. Wykład

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

. Cel ćwiczenia Celem ćwiczenia jest porównanie na drodze obserwacji wizualnej przepływu laminarnego i turbulentnego, oraz wyznaczenie krytycznej licz

Program MC. Obliczyć radialną funkcję korelacji. Zrobić jej wykres. Odczytać z wykresu wartość radialnej funkcji korelacji w punkcie r=

Teoria kinetyczno cząsteczkowa

Diagramy UML, przykład problemu kolizji

MODELOWANIE RZECZYWISTOŚCI

IX. MECHANIKA (FIZYKA) KWANTOWA

dr inż. Jan Staszak kierunkowy (podstawowy / kierunkowy / inny HES) obowiązkowy (obowiązkowy / nieobowiązkowy) język polski II

Wykład 3 Zjawiska transportu Dyfuzja w gazie, przewodnictwo cieplne, lepkość gazu, przewodnictwo elektryczne

Numeryczna symulacja rozpływu płynu w węźle

Wektory, układ współrzędnych

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

FIZYKA klasa 1 Liceum Ogólnokształcącego (4 letniego)

Wykład 2. Przykład zastosowania teorii prawdopodobieństwa: procesy stochastyczne (Markova)

Optymalizacja ciągła

W dowolnym kwadracie 3x3 ustawiamy komórki na palące się (stan 3). Program powinien pokazywać ewolucję pożaru lasu.

Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015

e E Z = P = 1 Z e E Kanoniczna suma stanów Prawdopodobieństwo wystąpienia mikrostanu U E = =Z 1 Wartość średnia energii

Nowoczesne narzędzia obliczeniowe do projektowania i optymalizacji kotłów

Kwantowa kooperacja. Robert Nowotniak. Wydział Fizyki Technicznej, Informatyki i Matematyki Stosowanej Politechnika Łódzka

Wykład FIZYKA I. 5. Energia, praca, moc. Dr hab. inż. Władysław Artur Woźniak

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Wykład 1 i 2. Termodynamika klasyczna, gaz doskonały

1. Operacje logiczne A B A OR B

Procesy Markowa zawdzięczają swoją nazwę ich twórcy Andriejowi Markowowi, który po raz pierwszy opisał problem w 1906 roku.

Prognozowanie i Symulacje. Wykład I. Matematyczne metody prognozowania

Co ma piekarz do matematyki?

Szablony funkcji i klas (templates)

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

dr inż. Jan Staszak kierunkowy (podstawowy / kierunkowy / inny HES) obowiązkowy (obowiązkowy / nieobowiązkowy) język polski II

ARYTMETYKA BINARNA. Dziesiątkowy system pozycyjny nie jest jedynym sposobem kodowania liczb z jakim mamy na co dzień do czynienia.

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

INFORMATYKA Z MERMIDONEM. Programowanie. Moduł 5 / Notatki

Metody obliczeniowe - modelowanie i symulacje

Podstawy Programowania C++

Przykłady: zderzenia ciał

Spacery losowe generowanie realizacji procesu losowego

2. Układy równań liniowych

Programowanie komputerowe. Zajęcia 4

TEORIA ERGODYCZNA. Bartosz Frej Instytut Matematyki i Informatyki Politechniki Wrocławskiej

Czym jest całka? Całkowanie numeryczne

Podstawy OpenCL część 2

1 Podstawy c++ w pigułce.

Języki i paradygmaty programowania 1 studia stacjonarne 2018/19. Lab 9. Tablice liczbowe cd,. Operacje na tablicach o dwóch indeksach.

Obliczenia iteracyjne

Przemiany energii w zjawiskach cieplnych. 1/18

Metoda elementów skończonych

Metody statystyczne kontroli jakości i niezawodności Lekcja II: Karty kontrolne.

Wstęp do sieci neuronowych, wykład 12 Łańcuchy Markowa

Laboratorium 10: Maszyna stanów

Systemy liczbowe. 1. System liczbowy dziesiętny

PROJEKT MES COMSOL MULTIPHYSICS 3.4

Wyznaczenie współczynnika restytucji

Zadanie. Oczywiście masa sklejonych ciał jest sumą poszczególnych mas. Zasada zachowania pędu: pozwala obliczyć prędkość po zderzeniu

17.1 Podstawy metod symulacji komputerowych dla klasycznych układów wielu cząstek

Algorytm. Krótka historia algorytmów

MODELOWANIE NUMERYCZNE POLA PRZEPŁYWU WOKÓŁ BUDYNKÓW

JAK DZIAŁAJĄ FUNKCJE PODZIAŁ PAMIĘCI

MODELOWANIE STANÓW CZYNNOŚCIOWYCH W JĘZYKU SIECI BAYESOWSKICH

1 Wskaźniki. 1.1 Główne zastosowania wskaźników

5. Analiza dyskryminacyjna: FLD, LDA, QDA

PODSTAWY MECHANIKI KWANTOWEJ

Janusz Adamowski METODY OBLICZENIOWE FIZYKI Kwantowa wariacyjna metoda Monte Carlo. Problem własny dla stanu podstawowego układu N cząstek

Programowanie komputerowe. Zajęcia 5

Optimizing Programs with Intended Semantics

Wykład FIZYKA I. 11. Fale mechaniczne. Dr hab. inż. Władysław Artur Woźniak

Modelowanie przepływu krwi przez aortę brzuszną człowieka

Podstawy fizyki sezon 1

Wykład 6. Metoda eliminacji Gaussa: Eliminacja z wyborem częściowym Eliminacja z wyborem pełnym

Odkrywanie algorytmów kwantowych za pomocą programowania genetycznego

wymiana energii ciepła

Nieskończona jednowymiarowa studnia potencjału

Transkrypt:

Uniwersytet Wrocławski Wydział Fizyki i Astronomii Instytut Fizyki Teoretycznej Sebastian Szkoda Implementacja modelu FHP w technologii NVIDIA CUDA Opiekun: dr hab. Zbigniew Koza, prof. UWr.

1 Model 1.1 Wstęp Mechanika płynów jest działem fizyki zajmującym się między innymi badaniem ruchu cieczy i gazów oraz oddziaływaniem tych ośrodków na opływane przez nie ciała stałe. Pierwsze próby matematycznego ujęcia ruchu płynów podjął w XVIw. Galileusz, jego pracę rozwijali L. Euler i D. Bernoulli, lecz dopiero w XIX w. dzięki pracy naukowej H. Naviera oraz G. Stokesa podano równania opisujące ruch płynów, nazwane od ich nazwisk równaniami Naviera-Stokesa (N-S). Osiągnięcie to nie jest niestety w pełni satysfakcjonujące, gdyż ponad sto lat później nadal nie dość, że nie potrafimy podać analitycznego rozwiązania równań N-S, to nie jesteśmy nawet w stanie udowodnić czy szukane rozwiązanie istnieje. Problem rozwiązania równania N-S w 2000 r. został ogłoszony jako jeden z siedmiu najważniejszych dla nauki problemów matematycznych nazwanych Problemami Milenijnymi [1]. Mimo wszystko powszechnie korzysta się z tych równań rozwiązując pewne jego przypadki metodami przybliżonymi. Główne metody przybliżone to: numeryczne rozwiązywanie równań różniczkowych (FDM, FEM, FVM), dynamika molekularna (MD) oraz gaz sieciowy automatów komórkowych (LGCA). 1.2 Automat Komórkowy (CA) W latach czterdziestych dwudziestego wieku matematycy John Von Neumann i Stanisław Ulam zaproponowali model dyskretyzacji przestrzeni i czasu. Przestrzeń sprowadzili do układu sąsiadujących komórek, z których każda może przyjąć określony stan. Ewolucja układu w czasie polega na symultanicznej zmianie stanu wszystkich komórek według określonych zasad. Podejście takie nazwano automatem komórkowym. Automaty komórkowe wykorzystywane do symulacji zjawisk hydrodynamicznych nazywane są gazami sieciowymi od angielskich akronimów: LGA lattice gas automata lub LGCA lattice gas cellular automata. 9

ROZDZIAŁ 1. MODEL 1.3 HPP Model HPP [2] (skrót od nazwisk Hardy, de Pazzis, Pomeau) jest pierwszym (1973 r.) i najprostszym modelem gazu sieciowego. Obecnie nie ma praktycznych zastosowań, jest jednak dobrym materiałem na początek nauki o modelowaniu metodami LGCA. W modelu tym mamy do czynienia z siecią kwadratową, w której węzłach umieszczamy od zera do czterech cząstek. Każda cząstka ma jeden z czterech kierunków (N,E,S,W) oraz prędkość 1js/ t [jednostka sieci / krok czasowy]. Cząstki w węźle mają różne kierunki. Przykładowy układ widzimy na rysunku 1.3. Ewolucja układu przebiega w dwóch krokach: 1) Ruch przesuwamy każdą z cząstek o jeden węzeł zgodnie z wektorem jej prędkości. 2) Kolizja do nowo powstałego układu stosujemy reguły jak na rysunku 1.2. Rysunek 1.1: Przykładowy stan sieci w modelu HPP. Inne układy cząstek w węzłach podczas kolizji ignorujemy. Reguły zderzeń są dobrane w ten sposób, by gwarantowały spełnienie zasady zachowania masy oraz zasady zachowania pędu. 10

1.4. FHP 1.4 FHP Rysunek 1.2: Reguły kolizji w modelu HPP. FHP [3] [4] [5] (skrót od nazwisk Frisch, Hasslacher, Pomeau) jest udoskonaloną wersją modelu gazu sieciowego HPP, w której sieć kwadratową zamieniono na trójkątną i wprowadzono bardziej skomplikowane zasady kolizji. W modelu mamy do czynienia z siecią trójkątną, w której węzłach umieszczamy od zera do siedmiu cząstek. Każda cząstka ma jeden z sześciu kierunków (NW, NE, E, SE, SW, W) oraz prędkość 1js/ t [jednostka sieci / krok czasowy]. Cząstki w węźle mają różne kierunki. W pewnych wariantach modelu FHP stosuje się również cząstki nieruchome. Przykładowy układ przedstawia rysunek 1.3. Ewolucja układu przebiega w dwóch krokach: 1) Ruch przesuwamy każdą z cząstek o jeden węzeł zgodnie z wektorami prędkości. 2) Kolizja do nowo powstałego układu stosujemy reguły zderzeń. Rysunek 1.3: Przykładowy stan sieci w modelu FHP. 11

ROZDZIAŁ 1. MODEL 1.4.1 Klasyfikacja modeli FHP Modele FHP klasyfikujemy ze względu na zastosowane reguły kolizji: FHP 1 - kolizje dwucząsteczkowe, symetryczne oraz trój-cząsteczkowe symetryczne. FHP 2 - jak wyżej, plus trójcząsteczkowe niesymetryczne oraz kolizje z nieruchomą cząstką. FHP 3 - wszystkie powyższe plus kolizje czterocząsteczkowe. Wszystkie warianty modelu FHP spełniają zasadę zachowania masy i pędu. Różne reguły zderzeń powodują różnice wyników na poziomie makroskopowym. Każdy z modeli FHP oddaje inny zakres współczynnika lepkości. Wartości współczynnika lepkości możliwe do osiągnięcia w symulacji zmniejszają się wraz ze zwiększeniem ilości zderzeń. 1.5 Przeszkody W modelu FHP przez przeszkodę należy rozumieć nieruchomą cząstkę, która podczas kolizji każdą cząsteczkę, która na nią wpadła, odbija pod kątem 180. Zderzenie pojedynczej cząstki z przeszkodą pokazuje rysunek 1.4. 12

1.6. IMPLEMENTACJA stan początkowy zderzenie odbicie stan końcowy 1.6 Implementacja 1.6.1 Węzeł Rysunek 1.4: Odbicie od przeszkody. W modelu FHP mamy do czynienia z cząsteczkami mogącymi przyjąć jeden z 6 kierunków, cząsteczką nieruchomą oraz przeszkodą. Daje to osiem możliwych stanów węzła, które mogą zachodzić jednocześnie. Wygodnym sposobem reprezentacji stanu węzła jest ciąg ośmiu bitów, w którym każdy bit odpowiada istnieniu (1) lub nieistnieniu (0) cząstki w określonym stanie, jak na rysunku 1.5. W większości języków programowania, ciąg ośmiu bi- Rysunek 1.5: Reprezentacja stanu węzła. Powyższy układ bitów (00010011) 2 odpowiada liczbie dziesiętnej (19) 10. tów wykorzystywany jest do reprezentacji znaków (ang. char). Stąd węzeł w stanie jak na rysunku 1.5 można zaimplementować jak na listingu 1.1: 1 unsigned char node = 19 ; Listing 1.1: Implementacja węzła. 13

ROZDZIAŁ 1. MODEL Aby uzyskać pełną kontrolę nad stanem węzła, musimy mieć możliwość wykonywania operacji ustawienia (listing 1.2), usunięcia (listing 1.3) oraz sprawdzenia stanu (listing 1.4) dowolnego bitu. Listing 1.2: Ustawianie bitu na pozycji (pos) w węźle (node) 1 void b i t S e t ( unsigned char& node, int pos ) { 3 val = (1 << ( pos ) ) ; } Listing 1.3: Usuwanie bitu z pozycji (pos) w węźle (node) void b i t C l r ( unsigned char& node, int pos ) 2 { val &= not (1 << ( pos ) ) ; 4 } Listing 1.4: Sprawdzanie bitu na pozycji (pos) w węźle (node) bool bittst ( unsigned char& node, int pos ) 2 { return ( ( val ) & (1 << ( pos ) ) ) ; 4 } 1.6.2 Sieć Sieć trójkątna wymaga specjalnego potraktowania przez programistę, gdyż musi być zrzutowana na tablicę, która zwykle utożsamiana jest z siecią kwadratową. Na rysunku 1.6 widzimy, że położenia węzłów naturalnie przechodzą w sieć kwadratową, można więc zaimplementować sieć trójkątną jako tablicę typu char o wymiarze szerokość (w) na wysokość (h), stąd: unsigned char s i e c [w*h ] ; Listing 1.5: Sieć węzłów. 14

1.6. IMPLEMENTACJA Rysunek 1.6: Zrzutowanie sieci trójkątnej na kwadratową. W przypadku reprezentacji sieci dwuwymiarowej za pomocą tablicy jednowymiarowej dostęp do węzła (i, j), uzyskujemy samodzielnie przeliczając indeksy, dlatego wygodnie jest posłużyć się następującą dyrektywą preprocesora: Listing 1.6: Dyrektywa preprocesora przeliczająca indeksy tablicy 2D na indeksy tablicy 1D. 1 #define pos ( i, j ) (w* j+i ) Dzięki niej zamiast stosować zapis dla tablicy dwuwymiarowej: 1 s i e c [ i ] [ j ] ; piszemy: Listing 1.7: Odczyt z tablicy 2D. Listing 1.8: Odczyt z tablicy 1D traktowanej jak tablica 2D. 1 s i e c [ pos ( i, j ) ] ; 1.6.3 Krok symulacji Ruch Ruch polega na propagacji cząsteczek z każdego węzła do węzłów sąsiednich. Czyli dla każdego węzła musimy sprawdzić stan każdego z bitów, a w przy- 15

ROZDZIAŁ 1. MODEL Rysunek 1.7: Zmiana stanu z (21) 10 = (00010101) 2 na (00101010) 2 = (42) 10. padku zastania stanu 1 przesuwamy cząstkę w odpowiednim kierunku. Do implementacji ruchu nie wystarczy jedna sieć, gdyż przesunięcie cząsteczki z jednego węzła do sąsiedniego zmieniłoby dane zapisane w tym drugim, stąd wniosek, że należy użyć dwóch sieci. Pierwsza z nich przechowuje aktualny stan układu, z niej pobieramy dane potrzebne do przesunięcia cząstek, lecz przesuniętą cząstkę zapisujemy w drugiej sieci. W następnym kroku sieci zamieniają się rolami. Zderzenia Po wykonaniu przesunięć cząstek, musimy ponownie sprawdzić stan każdego z węzłów, tym razem jednak nie patrzymy na stan konkretnych bitów, a na stan całego węzła i postępujemy zgodnie z regułami opisanymi w punkcie 1.4.1. Aby czynność powyższą wykonywać sprawnie, warto wpisać wszystkie możliwe stany węzła w tablicę. Ilość dopuszczalnych stanów to 2 8 = 256, co jest dość skromnym obciążeniem pamięci. Tablica zawierająca stany węzłów powinna reprezentować odwzorowanie przekształcające zastany stan na odpowiadający mu stan zgodny z regułami z rozdziału 1.4.1. Czyli przykładowo pod indeksem 21 tablicy ma znajdować się wartość 42 ponieważ (21) 10 = (00010101) 2 ma przekształcić się na (00101010) 2 = (42) 10 zgodnie z regułą z rysunku 1.7. Natomiast pod indeksem 42 ma znajdować się wartość 21, ponieważ reguła ta stosuje się w dwie strony. Problematyczne w takim podejściu są reguły kolizji zależne od zmiennej losowej, gdyż powyższa tabelaryzacja reguł tego przypadku nie uwzględnia. Rozwiązaniem może być zastosowanie dwóch tablic stanów, jednej dla przypadku zmiennej losowej 0 < p 0.5, drugiej dla 0.5 < p 1. Wtedy przed każdą zmianą stanu węzła konieczne jest losowanie wartości losowej p : 0 < p 1 z rozkładu jednostajnego. 16

Rysunek 5.4: Przepływ przez rurę z płaską przeszkodami, linie prądu wygenerowano w programie Paraview[10]. 45

Bibliografia [1] Clay Mathematics Institute Millennium Prize Problems http://www.claymath.org/millennium/navier- Stokes Equations/navierstokes.pdf [2] Dieter A. Wolf-Gladrow, Lattice-Gas Cellular Automata and Lattice Boltzmann Models. An Introduction. Springer-Verlag 2000 r. [3] U.Frisch, B.Hasslacher, Y.Pomeau Lattice Gas Automata for the Navier- Stokes Equation, Physical Review Letters vol. 56, str. 1505-1508, 1986 r. [4] M.C.Sukop, D.T. Thorne Jr. Lattice Boltzmann Modeling, Springer, 2006 r. [5] B.Chopard, M.Drozd Cellular Automata Modeling of Physical Systems, Cambridge University Press, 1998 r. [6] NVIDIA, NVIDIA CUDA. Programming Guide, ver. 3.1, 2010 r. [7] L.D.Landau, E.M.Lifszyc Hydrodynamika, PWN, 1994 r. [8] S.Chen, K.Diemer, G.D.Doolen, K.Eggert, C.Fu, S.Gutman, B.J.Travis Lattice gas automata for flow through porous media., Physica D 47, str.72-84, 1991 r. [9] M.Raffel, C.Willert, J.Kompenhans. Particle Image Velocimetry. A Practical Guide. Springer 1998 r. [10] Kitware Inc. Paraview data analysis and visualization application. http://www.paraview.org. 47