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

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

Implementacja modelu FHP w technologii NVIDIA CUDA

Druga aplikacja Prymitywy, alpha blending, obracanie bitmap oraz mały zestaw przydatnych funkcji wyświetlających własnej roboty.

Badanie zależności położenia cząstki od czasu w ruchu wzdłuż osi Ox

WYKŁAD 3 WYPEŁNIANIE OBSZARÓW. Plan wykładu: 1. Wypełnianie wieloboku

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

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

Rozdział 4: PIERWSZE KROKI

Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup

Użycie przestrzeni papieru i odnośników - ćwiczenie

Dokąd on zmierza? Przemieszczenie i prędkość jako wektory

FINCH PONG. Realizator: Partner: Patronat:

Obsługa programu Soldis

ANALIZA I INDEKSOWANIE MULTIMEDIÓW (AIM)

Programowanie w JAVA Lab. 5 - Wątki. 1. Wykorzystując metodę Monte Carlo narysować wykres funkcji oraz obliczyć całkę: 7 x ) xy, 8,8

4.6 OpenOffice Draw tworzenie ilustracji

LIVE Gra w życie. LIVE w JavaScript krok po kroku. ANIMACJA Rozpoczynamy od podstawowego schematu stosowanego w animacji

Nadają się do automatycznego rysowania powierzchni, ponieważ może ich być dowolna ilość.

FUNKCJA KWADRATOWA. Wykresem funkcji kwadratowej jest parabola o wierzchołku w punkcie W = (p, q), gdzie

Następnie zdefiniujemy utworzony szkic jako blok, wybieramy zatem jak poniżej

PROJEKT WIZYTÓWKI WIZYTÓWKA A

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

Ćwiczenie 3. Iteracja, proste metody obliczeniowe

INSTRUKCJA DO ĆWICZENIA 5

Ruch prostoliniowy. zmienny. dr inż. Romuald Kędzierski

Koło zębate wału. Kolejnym krokiem będzie rozrysowanie zębatego koła przeniesienia napędu na wał.

Rozwiązania zadań. Arkusz Maturalny z matematyki nr 1 POZIOM ROZSZERZONY. Aby istniały dwa różne pierwiastki równania kwadratowego wyróżnik

pojawianie się na drodze - z prawdopodobieństwem alf a nowe auto pojawia się na początku ulicy z pewną prędkością początkową

Podstawy Processingu. Diana Domańska. Uniwersytet Śląski

2 Przygotował: mgr inż. Maciej Lasota

Wizualizacja płomienia

Blok 6: Pęd. Zasada zachowania pędu. Praca. Moc.

6. FUNKCJE. f: X Y, y = f(x).

KRYPTOGRAFIA I OCHRONA DANYCH PROJEKT

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

Szybkie tworzenie grafiki w GcIde

Janusz Ganczarski. OpenGL Pierwszy program

18. Siły bezwładności Siła bezwładności w ruchu postępowych Siła odśrodkowa bezwładności Siła Coriolisa

Wprowadzenie do rysowania w 3D. Praca w środowisku 3D

Mikrokontrolery wytyczne do projektów

dr inż. Cezary Żrodowski Wizualizacja Informacji WETI PG, sem. V, 2015/16

Mgr inż. Wojciech Chajec Pracownia Kompozytów, CNT Mgr inż. Adam Dziubiński Pracownia Aerodynamiki Numerycznej i Mechaniki Lotu, CNT SMIL

1. Opis okna podstawowego programu TPrezenter.

AUTOCAD teoria i zadania z podstaw rysowania Rysowanie linii, prostej, półprostej, punktu, trasy, polilinii. Zadania geodezyjne.


Łożysko z pochyleniami

PROFIL PRĘDKOŚCI W RURZE PROSTOLINIOWEJ

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

1. Otwórz pozycję Piston.iam

dr inż. Cezary Żrodowski Wizualizacja Informacji WETI PG, sem. V, 2015/16 b) Operacja wyciągnięcia obrotowego z dodaniem materiału - uchwyt (1pkt)

Rysowanie punktów na powierzchni graficznej

Spis treści. 1 Aplet. 2 Od aplikacji do apletu. 1 Aplet 1. 2 Od aplikacji do apletu 1. 3 Budowa apletu 3. 4 Cykl życia apletu 4

KGGiBM GRAFIKA INŻYNIERSKA Rok III, sem. VI, sem IV SN WILiŚ Rok akademicki 2011/2012

Podstawy Informatyki Wykład V

Wstęp Pierwsze kroki Pierwszy rysunek Podstawowe obiekty Współrzędne punktów Oglądanie rysunku...

Wstęp do sieci neuronowych, wykład 11 Łańcuchy Markova

Aplikacja kret dla App Inventor 2

Wartości x-ów : Wartości x ów można w Scilabie zdefiniować na kilka sposobów, wpisując odpowiednie polecenie na konsoli.

Delvotest Inkubator. Instrukcja obsługi. Wersja 1.0

Politechnika Poznańska

Podstawy Procesów i Konstrukcji Inżynierskich. Praca, moc, energia INZYNIERIAMATERIALOWAPL. Kierunek Wyróżniony przez PKA

Fizyka 1 Wróbel Wojciech. w poprzednim odcinku

Ćwiczenie 1 Automatyczna animacja ruchu

dr inż. Cezary Żrodowski Wizualizacja Informacji WETI PG, sem. V, 2015/16

TWORZENIE SZEŚCIANU. Sześcian to trójwymiarowa bryła, w której każdy z sześciu boków jest kwadratem. Sześcian

AKADEMIA MORSKA KATEDRA NAWIGACJI TECHNICZEJ

Fizyka 1 Wróbel Wojciech. w poprzednim odcinku

Gry Komputerowe - laboratorium 2. Kamera FPP / TPP. mgr inż. Michał Chwesiuk 1/11. Szczecin, r

Zad.30. Czy można utworzyć klasę, która implementuje oba interfejsy?

AXIS2 - tworzenie usługi sieciowej i klienta Axis Data Binding. dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak

Fizyka w sporcie Aerodynamika

Projekt połowicznej, prostej endoprotezy stawu biodrowego w programie SOLIDWorks.

Wprowadzenie do Mathcada 1

3 Przygotował: mgr inż. Maciej Lasota

Podstawowe operacje na chmurze punktów pochodzących z lotniczego skaningu laserowego

2. Tablice. Tablice jednowymiarowe - wektory. Algorytmy i Struktury Danych

Programowanie gry Smerf w labiryncie

Opis szybkiego uruchomienia programu APBSoft

Cykl lekcji informatyki w klasie IV szkoły podstawowej. Wstęp

ELEMENTY AUTOMATYKI PRACA W PROGRAMIE SIMULINK 2013

Równoległe symulacje Monte Carlo na współdzielonej sieci

Przestrzenne układy oporników

Tworzenie krzywych (curve) w module Geometry programu MSC.Patran można obywać się między innymi przy użyciu poniższych dwóch metod:

Projektowania Układów Elektronicznych CAD Laboratorium

Ćwiczenie 1: Pierwsze kroki

Programowanie obiektowe - zadania

Politechnika Warszawska Wydział Mechatroniki Instytut Automatyki i Robotyki

Układ scalony UL 1111

Tworzenie nowego rysunku Bezpośrednio po uruchomieniu programu zostanie otwarte okno kreatora Nowego Rysunku.

Moduł TUCT. A następnie, w wyświetlonym oknie Audience planes.

Zasady dynamiki Newtona. Pęd i popęd. Siły bezwładności

ANALIZA HARMONICZNA DŹWIĘKU SKŁADANIE DRGAŃ AKUSTYCZNYCH DUDNIENIA.

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Matematyka dyskretna

ZADANIA MATURALNE - ANALIZA MATEMATYCZNA - POZIOM ROZSZERZONY Opracowała - mgr Danuta Brzezińska. 2 3x. 2. Sformułuj odpowiedź.

Kwantyle. Kwantyl rzędu p rozkładu prawdopodobieństwa to taka liczba x p. , że. Możemy go obliczyć z dystrybuanty: P(X x p.

Przykładowa dostępna aplikacja w Visual Studio - krok po kroku

LABORATORIUM SYSTEMÓW POMIAROWYCH KTP IR PW MATERIAŁY POMOCNICZE DO ĆWICZENIA 1 SYMULATOR SYSTEMU POMIAROWEGO W STANDARDZIE IEC-625.

Transkrypt:

Symulacje komputerowe dynamiki płynów Model FHP i przepływ Poiseuille a Beata Kowal 1 Wstęp 1.1 Model FHP Model gazu sieciowego służy do symulowania przepływu płynów. Model gazu FHP oparty jest na sieci trójkątnej. W modelu FHP1 mamy zderzenia dwucząstkowe oraz trzycząstkowe: W modelu FHP2 mamy cząstki stacjonarne i następujące zderzenia: W modelu FHP3 dodatkowe zderzenia trójcząstkowe: 1

Typy odbić: 1.2 Przepływ Poiseuille a Pisząc program skupiłam się na problemie przepływu Poiseuille a. W chwili początkowej nadajemy płynowi stałą prędkość wzdłuż osi poziomej X. Po pewnym czasie prędkość przepływu płynu uzyskuje profil paraboliczny. 2 Opis programu Klasa Vertex zawiera: n[6] - tablica 6-elementowa opisująca czy do węzła zbliża się cząstka StationaryState - czy w węźle znajduje się cząstka stacjonarna StationaryStateChange - czy w kroku symulacji nastąpi zmiana obsadzenia węzła Probability - liczba 0 lub 1, wskazująca jeden z dwóch możliwych stanów końcowych zderzających się cząstek. Border - czy węzeł jest węzłem graniczącym z przeszkodą lub ścianą, na takich węzłach następują odbicia VacumVertex - czy węzeł jest węzłem, którego cząstki nie mogą osiągnąć, czyli wewnątrz ściany lub przeszkody. i,j - współrzędne węzła. Vertex(), Vertex(int,int) - konstruktory Neighbours - tablica sąsiadów węzła SetNeighbour(int, Vertex) - ustawienie sąsiadów węzła 2

SetZero - zerowanie tablicy n[6] VertexEvolution1(int), VertexEvolution2(int), VertexEvolution3(int) - ewolucja węzła w modelach FHP1, FHP2, FHP3 (zderzenia takie jak we wstępie) BorderVertexEvolution1(int), BorderVertexEvolution2(int) - odbicie do tyłu i zwierciadlane (jak we wstępie). D(int), T(int), DIIa(int), DIIb(int), DIIIa(int), DIIIb(int) - funkcje pomocnicze. Klasa Grid zawiera: Width, Height - szerokość i wysokość sieci Grid() - konstruktor. Vertices - tablica dwuwymiarowa węzłów sieci Vertex this[int,int] - sieć ma charakter tablicy ClearStates() - czyszczenie tablicy węzłów Mod(int,int) - funkcja modulo Klasa Simulation zawiera: RandomNumber() - generuje losowo liczbę 0 lub 1 Nr - nr kroku ewolucji Dens, MomX, MomY - tablice gęstości i pędu w kierunku X i Y - średnia w blokach MaxDens - maksymalna wartość gęstości wśród bloków TypeOfReflection - typ odbicia TypeOfModelFHP - numer modelu FHP niblocksum - suma parametrów n i w bloku ciblocksum - suma parametrów c i w bloku StatSum - suma cząstek stacjonarnych w bloku BlockSize - rozmiar bloku SimulationGrid, BackupGrid - dwie sieci, BackupGrid ewoluuje z SimulationGri a następnie zamieniamy sieci. ClearSimulationGrid() - czyszczenie tablicy węzłów int this[int,int,int] - parametry n[6] sieci SimulationGrid mają charakter tablicy trójwymiarowej Vertex this[int,int] - sieć SimulationGrid ma charakter tablicy dwuwymiarowej Simulation(int,int) - konstruktor Step() - krok ewolucyjny SetBorder(int,int) - ustawienie węzła w obu sieciach symulacji na typ Border=1 SetVacum(int,int) - ustawienie węzła w obu sieciach symulacji na typ VacumVertex=1 Generate ci() - generuje tablicę ciblocksum Generate ni() - generuje tablicę niblocksum public void Generate DensityAndMomentum() - generuje tablice Dens, MomX, MomY Density(int, int) - ilość cząstek w węźle MomentumX(int, int ) - pęd X cząstek w węźle MomentumY(int, int ) - pęd Y cząstek w węźle Density() - ilość cząstek w całej sieci MomentumX() - całkowity pęd X sieci 3

MomentumY() - całkowity pęd Y sieci Klasa VisualizerMicro zawiera: BufferContext, Buffer - zmienne związane z buforem, po którym rysujemy Simulation - element klasy Simulation Timer - uruchamia funkcję Step Particles - liczba cząstek SimulationStep - delegat kroku symulacji IsOn - włącznik timera TimeInterval - przedział czasu pomiędzy krokami Reset(int,int,int,int)-tworzenie nowej symulacji z parametrami wysokość, szerokość, liczba cząstek, numer modelu FHP, typ odbicia VisualizerMicro() -konstruktor Project(int, int, float) - zwraca współrzędne wierzchołka Circle(Graphics, float, float, float) - rysowanie okręgu Triangle(Graphics, float, float, float, float, int) - rysowanie strzałki Draw() - rysowanie sieci ResizeBuffer() - ustawia wielkość buforu Step(object, EventArgs ) - krok OnResize(EventArgs) - funkcja, która uruchamia się przy zmianie rozmiaru okna. OnPaint(PaintEventArgs), OnPaintBackground(PaintEventArgs ) - funkcje, które uruchamiają się, gdy kontrolka ma się narysować. Dispose(bool) - czyszczenie zasobów Klasa VisualizerMacro zawiera: BufferContext, Buffer - zmienne związane z buforem, po którym rysujemy Simulation - element klasy Simulation Timer - uruchamia funkcję Step Particles - liczba cząstek SimulationStep - delegat kroku symulacji DensAverage, MomXAverage, MomYAverage - tablice dwuwymiarowe średnich wartości gęstości i składowych pędu po czasie i po bloku IsOn - włącznik timera TimeInterval - przedział czasu pomiędzy krokami Reset(int,int,int,int)-tworzenie nowej symulacji z parametrami wysokość, szerokość, liczba cząstek, numer modelu FHP, typ odbicia VisualizerMacro() -konstruktor Project(int, int, float) - zwraca współrzędne piksela Pixel(Graphics, float, float,float, int) - rysowanie piksela Draw() - rysowanie pikseli ResizeBuffer() - ustawia wielkość buforu Step(object, EventArgs ) -krok OnResize(EventArgs) - funkcja, która uruchamia się przy zmianie rozmiaru okna. OnPaint(PaintEventArgs), OnPaintBackground(PaintEventArgs ) - funkcje, które uruchamiają się, gdy kontrolka ma się narysować. Dispose(bool) - czyszczenie zasobów 4

Klasa WindowFHP zawiera w pliku Window.cs: WindowFHP()-konstruktor StartButton Click(object, EventArgs ) - gdy naciskany jest przycisk start ResetButton Click(object, EventArgs ) - gdy naciskany jest przycisk reset IntervalScrollBar ValueChanged(object, EventArgs ) - gdy przesuwany jest suwak visualizermicro SimulationStep() - licznik kroków w trybie Micro visualizermacro SimulationStep() - licznik kroków w trybie Macro TabControl SelectedIndexChanged(object, EventArgs ) - zmiana zakładki StringToInt(string) - funkcja pomocnicza, która przekształca string na int Oprócz tego WindowFHP.designer.cs - plik wygenerowany przez Visual Studio - zawiera budowę okna. 3 Obsługa programu W programie możemy wygenerować sieć gdzie od górnej i dolnej granicy cząstki się odbijają, a na lewej i prawej ustalono cykliczne warunki brzegowe. Program może pracować w dwóch trybach: Micro i Macro. W trybie Micro możemy oglądać ruch pojedynczych cząstek, ich wektory prędkości i zderzenia. W trybie Macro obserwujemy wielkość makroskopową - gęstość - uśredniona w bloku 5x5. W programie możemy regulować czas pomiędzy krokami symulacji. Możemy zmienić liczbę losowanych cząstek, wymiary sieci, rodzaj modelu FHP oraz rodzaj odbicia - po wprowadzeniu tych zmian należy wcisnąć reset, aby wygenerować sieć z nowymi parametrami. Cząstki są ustawiane w losowych punktach sieci. W obecnej wersji programu przystosowanej do przepływu Poiseuille a połowa cząstek jest losowana z losowymi kierunkami a połowa ma zwrot pędu w jednym kierunku, wzdłuż rury. Może się zdarzyć, że w tym samym punkcie zostaną wylosowane 2 cząstki z tym samym pędem - wtedy będą traktowane jako jedna i cząstek w symulacji będzie mniej niż chcieliśmy. Tryb Macro generuje pliki.vtk po 100 i 600 krokach z wielkościami makroskopowymi - wielkości skalarne gęstość, wartości pędu X, wartości pędu Y, oraz wielkości wektorowe pędu. Wielkości są uśrednione po 100 krokach i po objętości bloku. 5

4 Wyniki Wygenerowałam tablicę 150x300 wezłów. Wylosowałam w niej 10 000 cząstek w kierunku X oraz 10 000 w losowych kierunkach. Wybrałam model FHP-I i typ odbicia nr 1 (do tyłu). Poniższy wykres przedstawia wartość składowej X pędu na początku symulacji - uśrednioną w pierwszych 100 krokach. Poniższy wykres przedstawia wartość składowej X pędu uśrednioną pomiędzy 500. a 600. krokiem. Nastąpił spadek tej składowej pędu przy brzegu. 6

Poniższy wykres przedstawia wartość składowej X pędu na początku symulacji - uśrednioną w pierwszych 100 krokach i uśrednioną w rzędach bloków. Na osi poziomej mamy numery rzędów bloków 0-19, na osi pionowej wartość pędu. Poniższy wykres przedstawia wartość składowej X pędu uśrednioną pomiędzy 500. a 600. krokiem i uśrednioną w rzędach bloków. Na osi poziomej mamy numery rzędów bloków 0-19, na osi pionowej wartość pędu. Wykres zawiera wielomianową krzywą regresji i współczynnik R 2. W wyniku symulacji otrzymaliśmy profil prędkości zbliżony do paraboli. 7

Bibliografia [1] stackoverflow.com [2] Sebastian Szczecina, Własności hydrodynamiczne modelu gazu sieciowego FHP-III [3] Josué Njock, A Method of Evaluating the Presence of Fan-Blade-Rotation Induced Unsteadiness in Wind Tunnel Experiments [4] Amir Masoud Abdol, Lattice Gas Automata 8