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

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

Programowanie Równoległe wykład, CUDA, przykłady praktyczne 1. Maciej Matyka Instytut Fizyki Teoretycznej

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

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

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

CUDA jako platforma GPGPU w obliczeniach naukowych

Implementacja modelu FHP w technologii NVIDIA CUDA

GRAFIKA CZASU RZECZYWISTEGO Wstęp do programowania grafiki czasu rzeczywistego.

Modelowanie i Animacja

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

Temat: Wprowadzenie do OpenGL i GLUT

Temat: Transformacje 3D

Przegląd 4 Aerodynamika, algorytmy genetyczne, duże kroki i dynamika pozycji. Modelowanie fizyczne w animacji komputerowej Maciej Matyka

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

Fizyka dla Informatyków Wykład 8 Mechanika cieczy i gazów

GRAFIKA CZASU RZECZYWISTEGO Wprowadzenie do OpenGL

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

Ruchome Piaski v1.0. Maciej Matyka

Ćwiczenie 2 Numeryczna symulacja swobodnego spadku ciała w ośrodku lepkim (Instrukcja obsługi interfejsu użytkownika)

Modelowanie Fizyczne w Animacji Komputerowej

Modelowanie absorbcji cząsteczek LDL w ściankach naczyń krwionośnych

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

Modelowanie Wieloskalowe

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

WYZNACZANIE RUCHU CIECZY LEPKIEJ METODĄ SZTUCZNEJ ŚCIŚLIWOŚCI NA SIATKACH NAKŁADAJĄCYCH SIĘ

Wprowadzenie do programowania z wykorzystaniem biblioteki OpenGL. Dorota Smorawa

Grafika Komputerowa, Informatyka, I Rok

Laboratorium komputerowe z wybranych zagadnień mechaniki płynów

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

Sieci obliczeniowe poprawny dobór i modelowanie

Programowanie procesorów graficznych NVIDIA (rdzenie CUDA) Wykład nr 1

Bartosz Bazyluk Wprowadzenie Organizacja i tematyka zajęć, warunki zaliczenia.

Wielkoskalowe obliczenia komputerowej dynamiki płynów na procesorach graficznych -- pakiet Sailfish

Modelowanie numeryczne oddziaływania pociągu na konstrukcje przytorowe

Termodynamika i właściwości fizyczne stopów - zastosowanie w przemyśle

Modelowanie wybranych zjawisk fizycznych

Symulacje komputerowe

Algorytmy renderingu dla programowalnych jednostek graficznych. prof. dr hab. inż. Maria Pietruszka mgr inż. Dominik Szajerman

Programowanie Równoległe wykład 12. OpenGL + algorytm n ciał. Maciej Matyka Instytut Fizyki Teoretycznej

Prosty program- cpp. #include <GL/glut.h>

x y

Grafika komputerowa Wstęp do OpenGL

Projekt 6: Równanie Poissona - rozwiązanie metodą algebraiczną.

Projektowanie elementów z tworzyw sztucznych

Dynamika morza FALE Wykład 1

Zasady zachowania, równanie Naviera-Stokesa. Mariusz Adamski

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Grafika komputerowa INSTRUKCJA DO LABORATORIUM 2: operacje przestrzenne oraz obsługa klawiatury i myszki

METODA ELEMENTÓW SKOŃOCZNYCH Projekt

Termodynamika. Część 11. Układ wielki kanoniczny Statystyki kwantowe Gaz fotonowy Ruchy Browna. Janusz Brzychczyk, Instytut Fizyki UJ

Modelowanie i Animacja

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

POLITECHNIKA ŚWIĘTOKRZYSKA w Kielcach WYDZIAŁ MECHATRONIKI I BUDOWY MASZYN KATEDRA URZĄDZEŃ MECHATRONICZNYCH LABORATORIUM FIZYKI INSTRUKCJA

Podstawy fizyki sezon 1 IV. Pęd, zasada zachowania pędu

Microsoft IT Academy kurs programowania

Politechnika Wrocławska, Wydział Informatyki i Zarządzania. Modelowanie

Metody Obliczeniowe Mikrooptyki i Fotoniki

Modelowanie jako sposób opisu rzeczywistości. Katedra Mikroelektroniki i Technik Informatycznych Politechnika Łódzka

Mechatronika i inteligentne systemy produkcyjne. Modelowanie systemów mechatronicznych Platformy przetwarzania danych

INSTRUKCJA DO ĆWICZENIA NR 7

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

Podstawy fizyki sezon 1 V. Pęd, zasada zachowania pędu, zderzenia

Teoria kinetyczno cząsteczkowa

IX. MECHANIKA (FIZYKA) KWANTOWA

Programowanie Równoległe Wykład, CUDA praktycznie 1. Maciej Matyka Instytut Fizyki Teoretycznej

Metody Obliczeniowe w Nauce i Technice

MODELOWANIE ZA POMOCĄ MES Analiza statyczna ustrojów powierzchniowych

Metody obliczeniowe - modelowanie i symulacje

Metody obliczeniowe - modelowanie i symulacje

Modelowanie matematyczne a eksperyment

ROZCHODZENIE SIĘ POWIERZCHNIOWYCH FAL LOVE A W FALOWODACH SPREśYSTYCH OBCIĄśONYCH NA POWIERZCHNI CIECZĄ LEPKĄ (NEWTONOWSKĄ)

Wykład Ćwiczenia Laboratorium Projekt Seminarium 45

Bartosz Bazyluk Wprowadzenie Organizacja i tematyka zajęć, warunki zaliczenia.

PRZEWODNIK PO PRZEDMIOCIE

POLITECHNIKA ŚLĄSKA WYDZIAŁ GÓRNICTWA I GEOLOGII. Roman Kaula

Ściśliwa magnetyczna warstwa graniczna jako prosty model Tachokliny we wnętrzu Słońca. Krzysztof Mizerski,

Plan Zajęć. Ćwiczenia rachunkowe

Nieustalony wypływ cieczy ze zbiornika przewodami o różnej średnicy i długości

Grafika komputerowa Wstęp do OpenGL

Intro 4kb. sphere tracing. Maciej Matyka (maq / floppy) Dla koła naukowego Voxel

Wykład 3. Zerowa i pierwsza zasada termodynamiki:

WYZNACZANIE NIEPEWNOŚCI POMIARU METODAMI SYMULACYJNYMI

Komputerowe modelowanie zjawisk fizycznych

Fizyka laboratorium 1

Spis treści. Wstęp... 11

Wprowadzenie do klas w C++ oraz biblioteki opengl

Modelowanie terenu na bazie symulacji erozji z wykorzystaniem deformowalnych wokseli

Hydro-Dynamica Rozwiązanie Numeryczne Równań Przepływu Cieczy Nieściśliwej.

Bartosz Bazyluk Wprowadzenie Organizacja i tematyka zajęć, warunki zaliczenia.

Zaawansowane programowanie w C++

Załącznik nr 1 do Zapytania ofertowego: Opis przedmiotu zamówienia

Studentom zostaną dostarczone wzory lub materiały opisujące. Zachęcamy do wykonania projektów programistycznych w postaci apletów.

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

Nie tylko Power Point

Laboratorium komputerowe z wybranych zagadnień mechaniki płynów

Wstęp do Modelu Standardowego

Przepływy Taylora-Couetta z wymianą ciepła. Ewa Tuliszka-Sznitko, Kamil Kiełczewski Wydział Maszyn Roboczych i Transportu

Wentylatory strumieniowe w FDS/PyroSim praktyczne zasady modelowania

Całkowanie numeryczne

przepływ Hagena-Poseuille a 22 października 2013 Hydrodynamika równanie Naviera-Stokesa przepły

Transkrypt:

Modelowanie komputerowe dynamiki płynów 2011-12-05 Maciej Matyka Instytut Fizyki Teoretycznej

Hydrodynamika http://www.realflow.com/

Konkursy na wydziale fizyki Lata 1999-2011 Oprogramowanie popularyzujące fizykę

Jak wyświetlić dane symulacji na ekranie? Animacja w czasie rzeczywistym (buforowanie) Możliwość interakcji z użytkownikiem Prostota rozwiązania OpenGL Przenośność kodu Windows Linux urządzenia mobilne Integracja (QT, WinAPI, SDL etc.) GL Utility Toolkit (GLUT) Zestaw procedur upraszczających życie

Graficzne hello world Zestaw punktów materialnych na ekranie (OpenGL) Przyspieszenie grawitacyjne (punkty odbijają się od podłoża) Dla każdego punktu: vy = vy + g*dt py = py + vy * dt Jeśli y<0 to y=-y; vy = vy; // prędkość // pozycja // kolizja

Otwarcie okna OpenGL Minimalny kod w GLUT (GL Utility Toolkit) Schemat: int main(int argc, char **argv) { glutinit(&argc, argv); glutinitdisplaymode(glut_depth GLUT_DOUBLE GLUT_RGBA); glutinitwindowposition(100,100); glutinitwindowsize(320,320); glutcreatewindow("cuda Hello World GFX"); C1 void changesize(int w, int h) { float ratio = 1.0 * w / h; glmatrixmode(gl_projection); glloadidentity(); glviewport(0, 0, w, h); gluortho2d(-1,1,-1,1); glmatrixmode(gl_modelview); } void idlefunction(void) { C2 } // register callbacks glutdisplayfunc(renderscene); glutreshapefunc(changesize); glutidlefunc(idlefunction); // enter GLUT event processing cycle glutmainloop(); } void renderscene(void) { } C3 glutpostredisplay(); glutswapbuffers(); Więcej: http://www.lighthouse3d.com/opengl/

Otwarcie okna OpenGL Minimalny kod w GLUT (GL Utility Toolkit) Schemat: int main(int argc, char **argv) { glutinit(&argc, argv); glutinitdisplaymode(glut_depth GLUT_DOUBLE GLUT_RGBA); glutinitwindowposition(100,100); glutinitwindowsize(320,320); glutcreatewindow("cuda Hello World GFX"); C1 void changesize(int w, int h) { float ratio = 1.0 * w / h; glmatrixmode(gl_projection); glloadidentity(); glviewport(0, 0, w, h); gluortho2d(-1,1,-1,1); glmatrixmode(gl_modelview); } void idlefunction(void) { C2 } // register callbacks glutdisplayfunc(renderscene); glutreshapefunc(changesize); glutidlefunc(idlefunction); // enter GLUT event processing cycle glutmainloop(); } void renderscene(void) { } C3 glutpostredisplay(); glutswapbuffers(); Więcej: http://www.lighthouse3d.com/opengl/

Otwarcie okna OpenGL Minimalny kod w GLUT (GL Utility Toolkit) Schemat: int main(int argc, char **argv) { glutinit(&argc, argv); glutinitdisplaymode(glut_depth GLUT_DOUBLE GLUT_RGBA); glutinitwindowposition(100,100); glutinitwindowsize(320,320); glutcreatewindow("cuda Hello World GFX"); C1 void changesize(int w, int h) { float ratio = 1.0 * w / h; glmatrixmode(gl_projection); glloadidentity(); glviewport(0, 0, w, h); gluortho2d(-1,1,-1,1); glmatrixmode(gl_modelview); } void idlefunction(void) { C2 } // register callbacks glutdisplayfunc(renderscene); glutreshapefunc(changesize); glutidlefunc(idlefunction); // enter GLUT event processing cycle glutmainloop(); } void renderscene(void) { } C3 glutpostredisplay(); glutswapbuffers(); Więcej: http://www.lighthouse3d.com/opengl/

Otwarcie okna OpenGL Minimalny kod w GLUT (GL Utility Toolkit) Schemat: int main(int argc, char **argv) { glutinit(&argc, argv); glutinitdisplaymode(glut_depth GLUT_DOUBLE GLUT_RGBA); glutinitwindowposition(100,100); glutinitwindowsize(320,320); glutcreatewindow("cuda Hello World GFX"); C1 void changesize(int w, int h) { float ratio = 1.0 * w / h; glmatrixmode(gl_projection); glloadidentity(); glviewport(0, 0, w, h); gluortho2d(-1,1,-1,1); glmatrixmode(gl_modelview); } void idlefunction(void) { C2 } // register callbacks glutdisplayfunc(renderscene); glutreshapefunc(changesize); glutidlefunc(idlefunction); // enter GLUT event processing cycle glutmainloop(); } void renderscene(void) { } C3 glutpostredisplay(); glutswapbuffers(); Więcej: http://www.lighthouse3d.com/opengl/

Konstrukcja C1 ustawienie współrzędnych punktów C2 przesunięcie punktów w nowe pozycje C3 narysowanie punktu na ekranie (przykład Visual C++)

Symulacje komputerowe cieczy http://interactiveflows.com

Równania Naviera--Stokesa Równania Naviera-Stokesa dla cieczy nieściśliwej: Nieliniowe równanie różniczkowe drugiego rzędu Równanie ciągłości przy założeniu stałej gęstości http://en.wikipedia.org/wiki/navier-stokes equations

Metody rozwiązania Skala makro (continuum) Navier Stokes Equations (NSE) Finite Difference Method (FDM) Finite Volume Method (FVM) Finite Element Method (FEM) Smoothed Particle Hydrodynamics (SPH) Dissipative Particle Dynamics (DPD) The Lattice Boltzmann Method (LBM) Lattice Gas Automata (LGA) Molecular Dynamics (MD) Skala mikro (poziom atomowy)

Dynamika molekularna Duża ilość atomów Potencjał L-J równania ruchu oddziaływanie atomu z atomem Skala mikroskopowa koncepcja Demona Laplace a? Tylko małe układy Allen, M.P et al., Computer Simulation of Liquids, Oxford Univ. Press.

Model gazu sieciowego LGA Uproszczenie: model gazu sieciowego opisany przez U. Frisha, B. Hasslachera i Y. Pomeau gaz FHP Rys. Kolizje w modelu FHP5 1) Transport 2) Kolizje U. Frish, B. Hasslacher, Y. Pomeau 1986 Lattice-Gas Automata for the Navier-Stokes Equation, Phys. Rev. Lett. 56, 1505 1508. Matyka, M. and Koza, Z., Spreading of a density front in the Kuentz-Lavallee model of porous media J. Phys. D: Appl. Phys. 40, 4078-4083 (2007)

Model gazu sieciowego LGA Model LGA nie jest doskonały: szum statystyczny wymaga uśredniania w czasie wymaga uśredniania w przestrzeni wymaga dużych siatek (pamięć) Rzadko używany w poważnych aplikacjach

Metoda gazu sieciowego Boltzmanna Historycznie wprowadzona jako rozwinięcie LGA Zmienne ni (0,1) zastąpione funkcją rozkładu

Model d2q9 Dyskretyzacja i model LBM Wektory prędkości i funkcja rozkładu na siatce: f ------> fi v ------> ci Thorne, D., Sukop, M., Lattice Boltzmann Method for the Elder Problem, FIU, CMWR(2004)

Równanie transportu (dyskretnie) Równanie transportu w modelu sieciowym Boltzmanna: gdzie zakres i zależy od użytej sieci.

t=0 Krok transportu

t=1/4 Krok transportu

t=1/2 Krok transportu

t=3/4 Krok transportu

t=1 Krok transportu

Podsumowanie: Algorytm LBM Podstawowy algorytm LBM to dwa kroki: kolizji: transportu: http://www.ift.uni.wroc.pl/~koma/pr/cudamm/lbm-mini.zip

Podstawowy algorytm LBM Można powiedzieć, że poniższy kod to pełny algorytm LBM (podstawowy!) for(int k=0; k< 9; k++) { int ip = ( i+ex[k] + L ) % (L); int jp = ( j+ey[k] + L ) % (L); // collision + streaming } if( FLAG[ip+jp*L] == 1 ) df [1-c][ i+j*l ][inv[k]] = (1-omega) * df[c][ i+j*l ][k] + omega* w[k] * rho * (1.0f - (3.0f/2.0f) * (ux*ux + uy*uy) + 3.0f * (ex[k] * ux + ey[k]*uy) + (9.0f/2.0f) * (ex[k] * ux + ey[k]*uy) * (ex[k] * ux + ey[k]*uy)); else df [1-c][ip+jp*L][k] = (1-omega) * df[c][ i+j*l ][k] + omega* w[k] * rho * (1.0f - (3.0f/2.0f) * (ux*ux + uy*uy)+ 3.0f * (ex[k] * ux + ey[k]*uy) + (9.0f/2.0f) * (ex[k] * ux + ey[k]*uy) * (ex[k] * ux + ey[k]*uy)); Pełny kod w matlabie na 1 stronie: http://www.exolete.com/code/lbm

Warunki brzegowe Bounce-back na sztywnej ściance Można uzyskać dokładność drugiego rzędu stosując wersję mid-grid Succi, Sauro (2001). The Lattice Boltzmann Equation for Fluid Dynamics and Beyond. Oxford University Press

Warunki brzegowe Bounce-back na sztywnej ściance Można uzyskać dokładność drugiego rzędu stosując wersję mid-grid Succi, Sauro (2001). The Lattice Boltzmann Equation for Fluid Dynamics and Beyond. Oxford University Press

Warunki brzegowe Bounce-back na sztywnej ściance Można uzyskać dokładność drugiego rzędu stosując wersję mid-grid Succi, Sauro (2001). The Lattice Boltzmann Equation for Fluid Dynamics and Beyond. Oxford University Press

Pantha Rhei / Floppy Demoscena 4kb intro (4096 bajtów) Animacja czasu rzeczywistego (LBM)

Metody rozwiązania Skala makro (continuum) Navier Stokes Equations (NSE) Finite Difference Method (FDM) Finite Volume Method (FVM) Finite Element Method (FEM) Smoothed Particle Hydrodynamics (SPH) Dissipative Particle Dynamics (DPD) The Lattice Boltzmann Method (LBM) Lattice Gas Automata (LGA) Molecular Dynamics (MD) Skala mikro (poziom atomowy)

Hydrodynamika cząstek rozmytych 1. Lagrangian Fluid Dynamics, Using Smoothed Particle Hydrodynamics, Micky Kelager, 2006 2. http://pl.wikipedia.org/wiki/sph) Podejście Lagrange a (ruchome punkty) Każda cząstka reprezentuje pewną objętość cieczy Wielkości fizyczne interpolowane po sąsiadach Gdzie Wij jest tytułowym rozmyciem np.

Algotytm SPH Inicjalizuj pozycje i prędkości cząstek SPH Oblicz gęstość cząstki (z kerneli rozmycia) Oblicz siły działające na cząstkę ciśnienie lepkość, Hydrodynamika cząstek rozmytych siły powierzchniowe Przesuń cząstki (najprościej schemat Euler ) v = v + (F/m)*dt p = p + v * dt (SPH w działaniu)

Numb res / Fairlight Demoscena demo (najważniejsza kategoria) Animacja czasu rzeczywistego (SPH, shadery GPU) 2 miejsce na The Gathering 2011

Koniec Dziękuję za uwagę, więcej? www.matyka.pl