• Nie Znaleziono Wyników

Modelowanie w środowisku OpenFOAM Politechnika Wrocławska

N/A
N/A
Protected

Academic year: 2022

Share "Modelowanie w środowisku OpenFOAM Politechnika Wrocławska"

Copied!
7
0
0

Pełen tekst

(1)

Modelowanie w środowisku OpenFOAM Politechnika Wrocławska

Dział Kształcenia Podyplomowego Autor: Tomasz Kozłowski

Wykładowca: dr inż. Tomasz Kozłowski

Specjalista CFD\Developer m aerodynamika

± oprogramowanie o otwartym kodzie Å obliczenia układów cieplnych elektrowni 3 projektowanie maszyn przepływowych

 numeryczne rozwiązywanie równań ruchu płynu

Umiejętności i doświadczenie

Python Fortran C++

VBA Bash

MatLab\Octave

Salome Platform LATEX

OpenFoam

Metody Numeryczne Modelowanie Matematyczne Dydaktyka\Szkolenia Linux

Politechnika Wrocławska LifeFlow

NATO Applied Vehicle Tech.

Hydroergia Elektrownia Turów

Wprowadzenie

W ramach kursu oferujemy wprowadzenie do oprogramowania OpenFOAM. Jest to darmowe środowisko o otwartym kodzie, które udostępnione jest na zasadach licencji GPL. Na przestrzeni ostatnich lat oprogramowanie niekomercyjne osiągnęło już pewną dojrzałość i z powodzeniem może konkurować ze swoimi komercyjnymi odpowiednika- mi. Środowisko OpenFOAM posiada jednak pewną przewagę. Dzięki temu, że kod jest otwarty, łatwa jest jego modyfikacja, a także wykorzystanie dodatkowych bibliotek, np.:

swak4Foam, które - między innymi - istotnie rozwijają możliwości definicji warunków początkowych i brzegowych.

Wysokie koszty licencji oprogramowania komercyjnego sprawiają, że darmowe śro- dowisko OpenFOAM stało się niezwykle atrakcyjne. Ma to szczególne znaczenie dla mniejszych przedsiębiorstw, umożliwia bowiem budowę wirtualnego laboratorium za znacznie niższą cenę. Na plus zaliczyć należy także bardzo rozbudowaną społeczność:

www.cfd-online.com, która służy wsparciem przy implementacji własnych przypad- ków obliczeniowych. Poniżej podaliśmy zestaw narzędzi, które zapewnią możliwość bu- dowy własnej darmowej platformy do sprawnego prowadzenia symulacji fizycznych:

Salome CAD OpenFOAM Octave Python ParaView Ubuntu Bash.

Do przygotowania i personalizacji przypadków obliczeniowych użyteczna jest choć elementarna wiedza z zakresu programowania. W środowisku OpenFOAM i systemie ope- racyjnym Linux, przydatna będzie też podstawowa znajomość powłoki Bash. Nato- miast w zastosowaniach naukowo – technicznych zorientowanych na matematykę ob- liczeniową, doskonale sprawdzają się z kolei języki Octave i Python, które znajdują szerokie zastosowanie w obróbce i prezentacji wyników obliczeń. Ponadto, oba języki charakteryzują się bogatymi i wydajnymi bibliotekami numerycznymi.

Do wizualizacji pól skalarnych i wektorowych wykorzystamy zaawansowane opro- gramowanie ParaView. Ważną cechą ParaView jest wsparcie dla skryptów napisanych w języku Python. W ten sposób możemy znacząco rozszerzyć technikę wizualizacji i tym samym dostosować ją do własnych potrzeb.

(2)

Opis kursu

Będziemy pracować w systemie operacyjnym Linux. Wybraliśmy dystrybucję Ubuntu, która jest jedną z najbardziej przyjaznych użytkownikowi. Omówimy komendy powłoki Bash przydatne w systemie Linux i niezbędne do obsługi obliczeń w OpenFOAM.

Podamy równania ruchu płynu i postać zachowawczą tych równań, równanie ciągło- ści, deficjencję warunków brzegowych i początkowych. Do modyfikacji standardowych warunków brzegowych uwzględnionych przez twórców OpenFOAM wykorzystamy narzę- dzie swak4foam. Przedstawimy algorytm projekcji (korekcji) ciśnienia, który jest jed- nym z najpopularniejszych algorytmów do numerycznego rozwiązywania równań ruchu płynu nieściśliwego.

Rys. 1. Kontury pola temperatury w przepływie z wymianą ciepła. Na lewej i prawej ściance zadaliśmy warunek symetrii. Nieregularny kształt rozkładu temperatury zwia- stuje kłopoty z precyzyjnym wyznaczeniem współczynnika α.

Omówimy zagadnienia związane z modelowaniem przepływu płynu z wymianą cie- pła, dla stałego strumienia ciepła od ścianki do płynu i stałej temperatury ścianki, rys. 1. Wyznaczymy numerycznie współczynnik przejmowania ciepła α na podstawie prawa Fouriera i prawa Newtona. Zakładając, że przepływ ciepła odbywa się w jednym kierunku: ∇T = ∂T∂y, współczynnik α możemy obliczyć z wzoru

(1) q = −λ∇T, q = α(Twall− Tf luid) α = − λ Twall− Tf luid

∂T

∂y.

Przedstawimy podstawy modelowania przepływu turbulentnego. Zasadniczą cechą ruchu turbulentnego jest istnienie całej rodziny wirów o różnej skali i energii, rys.

2. Obliczanie takich zagadnień wymaga stosowania bardzo gęstej siatki numerycznej

Rys. 2. Obrazy pola wirowego uzyskane przez autora oryginalną metodą typu „Wir w komórce”. Opływ walca dla liczby: Re = 50000 po stronie lewej, po stronie prawej tło wirowe utworzone przez profil poruszający się ruchem trzepoczącym, Re = 2500. Od- tworzenie drobno-skalowych struktur wirowych charakterystycznych dla przepływów z wysokimi liczbami Reynoldsa, wymaga zastosowania siatki numerycznej o bardzo drob- nych oczkach.

(3)

Rys. 3. Wiry krawędziowe powstające na skrzydłach samolotu zbudowanych w ukła- dzie podwójnej delty. Model stacjonarny, do obliczeń przyjęto model turbulencji Spa- lart’a–Allmaras’a.

i algorytmów wysokiego rzędu, dlatego w praktyce przemysłowej na ogół posługuje- my się modelami turbulencji. Podamy dwa najpopularniejsze dwurównaniowe modele turbulencji: k − ε i k − ω, wraz z typowymi warunkami brzegowymi. Cała trudność modelowania przepływów turbulentnych polega na poprawnym dobraniu modelu do ba- danego zjawiska, nie istnieje bowiem model uniwersalny do zastosowań we wszystkich zagadnieniach Mechaniki Płynów. Na rys. 3pokazano wizualizację opływu samolotu o skrzydłach zbudowanych w układzie podwójnej delty. Do obliczeń wykorzystany został jednowymiarowy model turbulencji Spalart’a–Allmaras’a, który jest szeroko stosowany w lotnictwie. Obraz przepływu istotnie kontrastuje z obrazami pokazanymi na rys. 2.

W ramach kursu, większość obliczeń przeprowadzimy dla przepływu laminarnego, ponieważ załączenie turbulencji wymaga tylko nieznacznej modyfikacji przypadku, przy znacznie większym koszcie obliczeniowym.

Dla wymienionych zadań opracujemy przypadki obliczeniowe wybierając na począ- tek proste geometrie, dla których utworzymy siatki numeryczne używając narzędzia:

blockMesh. W ten sposób będziemy mogli skoncentrować się tylko na prawidłowym przygotowaniu przypadku dla wybranego zagadnienia testowego. Za pomocą narzędzia

Rys. 4. Podział obszaru obliczeniowego na bloki po stronie lewej, strukturalna siatka numeryczna utworzona narzędziem blockMesh, po stronie prawej. Obraz siatki pochodzi z dokumentacji dla środowiska OpenFOAM, [1].

(4)

Rys. 5. Siatka numeryczna utworzona narzędziem snappyHexMesh. Obraz po stronie lewej pochodzi z dokumentacji dla środowiska OpenFOAM, [1].

blockMesh jesteśmy w stanie utworzyć złożoną siatkę dla większości geometrii, jednak jest to dość pracochłonne i wymaga podzielenia obszaru obliczeniowego na bloki, rys.

4. Siatka numeryczna utworzona narzędziem blockMesh składa się tylko z sześciościa- nów (dla zagadnień dwuwymiarowych w kierunku dodatkowym występuje jedno oczko siatki i trzeci wymiar będzie ignorowany).

Dalej wykonamy obliczenia numeryczne na siatce zbudowanej narzędziem snappyHexMesh. Proces tworzenia siatki został wstępnie przedstawiony na rys. 5. Tak zbudowana siatka numeryczna składa się zarówno z sześciościanów wewnątrz obsza- ru obliczeniowego, jak i z elementów czworościennych, które występują przy brzegach.

Nakład pracy potrzebny do utworzenia siatki narzędziem snappyHexMesh jest dużo mniejszy niż używając narzędzia blockMesh.

Obliczenia numeryczne przeprowadzimy dla płynu nieściśliwego, laminarnego i tur- bulentnego. Na potrzeby kursu przygotowaliśmy kilka zadań testowych:

• przepływ z ruchomą ścianką

• przepływ przez kanał z nagłym rozszerzeniem

• przepływ przez przewód kołowy bez/z wymianą ciepła

• opływ walca

Dla każdego z wymienionych przypadków przygotujemy wizualizacje w programie ParaView. Wykorzystując język Python utworzymy wizualizację za pomocą pasywnych

Rys. 6. Laminarny przepływ wokół walca przytwierdzonego do podłoża. Na rysunku pokazano wizualizację za pomocą funkcji prądu i pasywnych markerów unoszonych wraz z polem prędkości.

(5)

markerów, tj. nieważkich cząstek unoszonych wraz z polem prędkości. Cząstki możemy rozłożyć dowolnie, w taki sposób, aby uchwycić interesujące nas zjawisko przepływowe, patrz rys. 6.

Wyniki obliczeń będziemy analizować używając standardowych narzędzi:

postprocess i sample. Pokażemy w jaki sposób można zbadać dokładność zastoso- wanego algorytmu do rozwiązywania równań ruchu pływu. W tym celu zdefiniujemy ogólne pojęcie rzędu dla dowolnej metody numerycznej.

Wyznaczymy rząd aplikacji (solvera) Simple do rozwiązywania równań ruchu pły- nu nieściśliwego, który dostarczony został przez twórców OpenFOAM. Do testu wybra- liśmy nieściśliwy, ustalony, laminarny1 przepływ przez kanał o przekroju kołowym – zagadnienie Hagena-Poiseuille’a, dla którego znane jest rozwiązanie dokładne. Róż- nicę pomiędzy rozwiązaniem numerycznym a rozwiązaniem dokładnym zmierzyliśmy w normie maksimum:

(2) kfnum(x) − fexact(x)k¬ Chα,

gdzie α oznacza rząd metody numerycznej. Rząd otrzymamy na podstawie pomiaru różnicy ciśnień na wlocie i wylocie z kanału. Do tego celu wykorzystamy narzędzie postprocess. Rząd obliczymy także mierząc profil pola prędkości, który odczytamy narzędziem sample. Do obróbki i prezentacji wyników będziemy używać oprogramo- wania Octave.

Szczegółowy program kursu

Przedstawimy zagadnienia, które wybraliśmy na potrzeby kursu. Oczywiście, tema- ty i liczbę zadań możemy dopasować do indywidualnych potrzeb klientów. Podaliśmy też przewidywaną liczbę godzin, które przeznaczone będą na kolejne zadania.

1. Wprowadzenie do powłoki Bash w systemie Ubuntu. 1h 2. Obsługa przypadku obliczeniowego dla środowiska OpenFOAM na przykładzie prze- pływu w kanale z ruchomą ścianką. Podstawy wizualizacji w programie ParaView,

funkcja prądu, pole prędkości i ciśnień. 1.5h

3. Podstawy tworzenia siatki numerycznej w aplikacji blockMesh na przykładzie kanału z nagłym rozszerzeniem. Podział siatki na bloki. 2h 4. Omówienie przypadku i symulacja przepływu laminarnego w kanale z nagłym rozszerzeniem. Obróbka wyników obliczeń w ParaView i wykorzystanie podsta-

wowych funkcji narzędzia postProcess. 2h

5. Modelowanie przepływów turbulentnych, uśrednianie równań ruchu płynu. Mo- dele k − ε i k − ω. Wprowadzenie warunków brzegowych dla równań opisujących ruch turbulentny na przykładzie przepływu przez kanał z nagłym rozszerzeniem.

Model stacjonarny i niestacjonarny. 1.5h

6. Symulacja przepływu laminarnego wokół walca przytwierdzonego do podło- ża. Wprowadzenie do tworzenia siatek numerycznych za pomocą narzędzia

snappyHexMesh. 2h

7. Obsługa obliczeń z poziomu skryptów powłoki Bash, przygotowanie siatki, wyko- nanie obliczeń, obróbka wyników za pomocą zaawansowanych funkcji narzędzia

postProcess. 2h

1Dla wyznaczenia rzędu ograniczyliśmy się do przepływu laminarnego, ponieważ dla wybranego testu rozwiązanie dokładne dla przepływu turbulentnego nie jest znane. Istnieją oczywiście zależności empiryczne, ale na tej podstawie dokładne wyznaczenie rzędu metody numerycznej na ogół nie jest możliwe.

(6)

8. Wprowadzenie do języka Python (będziemy korzystać ze wsparcia Python dla ParaView), zmienne, dodatkowe biblioteki, definiowanie funkcji, instrukcje wa-

runkowe, pętle. 1h

9. Analiza opływu walca na podstawie śledzenia położenia pasywnych markerów, które unoszone będą wraz z przepływem. Do utworzenia markerów i wizualizacji

wykorzystamy język Python. 1h

10. Obliczenia stacjonarne przepływu laminarnego w prostoosiowej rurze o przekro- ju kołowym dla kilku siatek o różnej liczbie oczek – to będzie nasza baza do wyznaczenia rzędu zbieżności. Wykorzystamy narzędzie sample do odczytania wyników. Obliczenia przeprowadzimy na wielu procesorach. 2h 11. Wykorzystanie powłoki Bash do automatyzacji procesu obliczeniowego. Przygo- towanie przypadków, przeprowadzenie obliczeń i obróbka wyników dla serii da- nych. Uzupełnienie informacji o skryptach powłoki Bash, m.in.: pętle i instrukcje

warunkowe2. 2h

12. Wprowadzenie do języka Octave wczytywanie/zapisywanie danych, podstawowe operatory, pętle, instrukcje warunkowe, tworzenie wykresów, praca z wektorami i macierzami, definiowanie funkcji, instrukcje wejścia\wyjścia. 2h 13. Wyznaczenie rzędu dla solvera simpleFoam na podstawie obliczeń numerycznych wykonanych w rurze prostoosiowej. W tym miejscu wykorzystamy możliwości

języka Octave. 2h

14. Przedstawienie podstaw modelowania przepływów nieściśliwych z wymianą cie- pła. Wyznaczanie rozkładu pola temperatury w rurze o przekroju kołowym, dla ustalonego strumienia ciepła i dla ustalonej temperatury ścianki. Modelowanie

procesów przewodzenia i przejmowania ciepła. 2h

15. Z pomocą narzędzia sample i języka Octave/Python wyznaczymy numerycznie współczynnik przejmowania ciepła α, na podstawie praw wymiany ciepła: prawa Fouriera i prawa Newtona, równanie (1)1 i (1)2. 2h

c Materiał chroniony prawem autorskim. Wszelkie prawa zastrzeżone. Dalsze rozpo- wszechnianie dzieła tylko za zgodą autora.

Cel kursu

Zapoznanie słuchaczy z techniką modelowania matematycznego w darmowym śro- dowisku OpenFOAM, wspartym o dodatkowe narzędzia ułatwiające obsługę przypadków obliczeniowych i obróbkę wyników, wybraliśmy: Octave, Python i Bash.

Zakładane efekty kształcenia

Szkolenie umożliwi uczestnikom zastosowanie środowiska OpenFOAM do rozwiązy- wania problemów inżynierskich spotykanych we własnej praktyce zawodowej. W ra- mach szkolenia każdy z kursantów opanuje tworzenie przypadków obliczeniowych, w tym: przygotowanie geometrii i siatki numerycznej, prawidłowe zdefiniowanie warun- ków brzegowych, zastosowanie wybranego modelu turbulencji i przeprowadzenie obli- czeń.

Po wykonaniu obliczeń uczestnicy będą potrafić przygotować wizualizacje w progra- mie paraView, wydobyć potrzebne wyniki obliczeń wykorzystując narzędzia OpenFOAM:

2Punkt dodatkowy. Zadanie automatyzacji dla serii przypadków obliczeniowych zrealizujemy jeśli zostanie nam zapas czasu.

(7)

postprocess i sample. Na potrzeby obróbki danych kursanci będą też umieć posłużyć się powłoką Bash i językiem Octave.

Forma szkolenia: laboratorium komputerowe

Miejsce: kurs odbędzie się zdalnie

Całkowita liczba godzin: 24h

Liczba godzin indywidualnych konsultacji: 2h/osoba

Cena kursu: 2800 PLN brutto

Zniżka dla studentów: -1300 PLN brutto

Proponowane terminy kursu: 22.05, 29.05, 12.06

Limit miejsc: min. 5 osób

Wymagania wstępne: brak

Warunki zaliczenia: obecność

Informacje dodatkowe:

wszyscy słuchacze otrzymają materiały szkoleniowe, a po ukończeniu kursu od- biorą świadectwo ukończenia kursu wydane przez Politechnikę Wrocławską terminy kursu i liczbę godzin dostosujemy do indywidualnych potrzeb klientów.

Naturalnie możemy również poszerzyć i zmodyfikować listę zadań zgodnie z pre- ferencjami kursantów

na zrealizowanie całego kursu przewidujemy trzy dni. Oczywiście jeśli zmienimy zakres materiału, zmienimy też czas przeznaczony na kurs

zapewniamy pomoc przy instalacji oprogramowania

w razie potrzeby oferujemy indywidualne konsultacje zarówno zdalnie jak i w tra- dycyjny sposób

zachęcamy do wyposażenia swojego stanowiska dla celów szkolenia w dwa moni- tory. W ten sposób będą Państwo pracować/programować na monitorze jednym, natomiast kod i prezentacje prowadzącego będą Państwo mogli wyświetlać na monitorze drugim.

Literatura

[1] C. J. Greenshields, OpenFOAM User Guide version 8, OpenFOAM Foundation Ltd, 2020.

[2] T. Holzmann, Mathematics, Numerics, Derivations and OpenFOAM R, Holzmann CFD, Leoben, Germany, 4th ed., 2014.

[3] T. Marić, J. H¨opken, and K. Mooney, The OpenFOAM R Technology Primer, sourceflux, Germany, 4th ed., 2014.

[4] F. Moukalled, L. Mangani, and M. Darwish, The Finite Volume Method in Computational Fluid Dynamics An Advanced Introduction with OpenFOAM R and Matlab R, Springer, Berlin, Germany, 2016.

Cytaty

Powiązane dokumenty

Znając parametry wyjściowe (sztywność zbrojenia, kąt tarcia wewnętrznego gruntu, wartość maksymalnej siły w warstwie zbrojenia przy podstawie konstrukcji oraz jej wysokość)

Przy załoŜeniu równości faz początkowych wszystkich fal kulistych wytwarzanych przez siatkę dyfrakcyjną, róŜnica faz w dowolnym punkcie przestrzeni P zaleŜy

passwd – zmiana hasła (id – sprawdzenie kto jest zalogowany)

Powyższy skrypt działa w następujący sposób: jeżeli pierwszy parametr uruchomienia skryptu jest równy lub mniejszy od parametru drugiego z którym skrypt został

„ „ obiekty wyższego rzędu obiekty wyższego rzędu → → kontenery kontenery obiektów obiektów niższego rzędu:..

Jeśli fala płaska pada na przesłonę, w której zrobiono dwie wąskie szczeliny, wówczas zgodnie z zasadą Huy- gensa każda ze szczelin jest źródłem wtórnej fali kulistej -

4 rez u lta ty obliczeń pozw alają określić zależność spraw ności w ytw arzania energii elektrycznej w badanym układzie od sto su n ­ ku ciśnień w tu rb in ie gazowej i

1) wykorzystuje definicje funkcji: sinus, cosinus i tangens dla kątów od 0° do 180° , w szczególności wyznacza wartości funkcji trygonometrycznych dla kątów 30°, 45°,