Otwarte oprogramowanie OpenFOAM podstawy, wybrane zastosowania Kamil Kwiatkowski 1,2,3 Paweł J. Żuk 2 1 Interdyscyplinarne Centrum Modelowania Matematycznego i Komputerowego, Uniwersytet Warszawski (ICM) 2 Wydział Fizyki, Uniwersytet Warszawski (FUW) 3 Clean Energy Revolution S.C. (CER) 28-30 stycznia 2014 r.
Kilka spraw organizacyjnych Strona szkolenia (prezentacja, przypadki obliczeniwe): http://www. syngasburner.eu/szkolenie/openfoam-podstawy-wybrane-zastosowania Szkolenie nie jest autoryzowane przez ESI-Group ani OpenFOAM Foundation. Materiały szkoleniowe w zdecydowanej większości bazują na materiale opracowanym i rozwijanym przez autorów. Mimo dołożenia starań nie gwarantujemy, że wszystko będzie poprawnie działać..., ale i tak sobie Państwo poradzą. W tym miejscu należy podziękować wszystkim Twórcom kodu, w szczególności Henry emu Wellerowi oraz Hroje Jasak owi. Oraz wszystkim zaangażowanym w rozwój kodu i dokumentacji.
Program w pigułce Siatki blockmesh snappyhexmesh import/export złożone geometrie Solwery przepływy turbulentne przepływy dwufazowe przepływy z reakcjami Zaawansowane Kompilacja, dodatkowe narzędzia, solwery
Program szkolenia 1 Dzień II, środa, 29 stycznia Wprowadzenie - metoda objętości skończonych (60 min) blockmeshdg - kompilacja i używanie (30 min) snappyhexmesh - siatki złożone (60 min) Wprowadzenie - turbulencja w OF (60 min) Przykład 2: przepływy turbulentne (90 min) Obliczenia równoległe (30 min) Wprowadzenie - chemia w OF (60 min) Przykład 3: reakcje chemiczne (przypadek prosty) (30 min) 2 przykład 4: reakcje chemiczne (przypadek zaawansowany) (45 min) Wprowadzenie - przepływy dwufazowe (60 min) przykład 5: przepływy dwufazowe (90 min) OpenFOAM - porównanie z Fluentem (45 min) Kompilacja własnego solvera (60 min)
Wprowadzenie - metoda objętości skończonych (60 min) Program szkolenia 1 Dzień II, środa, 29 stycznia Wprowadzenie - metoda objętości skończonych (60 min) blockmeshdg - kompilacja i używanie (30 min) snappyhexmesh - siatki złożone (60 min) Wprowadzenie - turbulencja w OF (60 min) Przykład 2: przepływy turbulentne (90 min) Obliczenia równoległe (30 min) Wprowadzenie - chemia w OF (60 min) Przykład 3: reakcje chemiczne (przypadek prosty) (30 min) 2 przykład 4: reakcje chemiczne (przypadek zaawansowany) (45 min) Wprowadzenie - przepływy dwufazowe (60 min) przykład 5: przepływy dwufazowe (90 min) OpenFOAM - porównanie z Fluentem (45 min) Kompilacja własnego solvera (60 min)
Wprowadzenie - metoda objętości skończonych (60 min) Typowe zagadnienia fla FVM Prawa zachowania np. równanie ciągłości u + f(u) + S(u) = 0 (1) t ρ + (ρu) = 0 (2) t Siatka D = D i, D i D j =, i j (3) i
Wprowadzenie - metoda objętości skończonych (60 min) Ważne cechy FVM zalety metoda jest zachowawcza siatka może mieć skomplikowany kształt wady metoda w większości implementacji jest pierwszego lub drugiego rzędu w dyskretyzacji przestrzennej
Wprowadzenie - metoda objętości skończonych (60 min) Całkowa i różniczkowa postać praw zachowania Różniczkowa postać praw zachowania u + f(u) + S(u) = 0 (4) t Twierdzenie Gaussa-Ostrogradzkiego F da = F nda = FdV (5) Całkowa postać praw zachowania udv + n f(u)da + S(u)dV = 0 (6) t
Wprowadzenie - metoda objętości skończonych (60 min) Siatka przestrzenna Objętości kontrolne Istnieją dwie metody trzymania przechowywania informacji o polach na siatce 1 w węzłach siatki 2 w środkach komórek siatki
Wprowadzenie - metoda objętości skończonych (60 min) Dyskretyzacja przestrzenna domeny obliczeniowej Miejsca przechowywania wartości pól W pakiecie OpenFOAM wartości pól przechowywane są dla punktów będących środkami komórek obliczeniowych, natomiast wszystkie strumienie są obliczane na ścianach komórek obliczeniowych. Przeliczenia pomiędzy wartościami pól w środkach komórek obliczeniowych a wartościami w środkach ścian komórek obliczeniowych dokonuje się interpolując jedne pola na drugie.
Wprowadzenie - metoda objętości skończonych (60 min) dyskretyzacja równań Dyskretyzacja przestrzenna Dyskretyzacji podlegają wszystkie operatory różniczkowe, które zamieniamy na postać całkową. W ten sposób następuje zamiana układu równań różniczkowych cząstkowych na układ równań algebraicznych. Indeks f oznacza watość pola na ściance pomiędzy komórkami obliczeniowymi Operator Laplace a (Γ φ)dv = (Γ φ) ds = Γ f S f (Γ φ) f (7) Operator konwekcji (unoszenia) (ρuφ)dv = (ρuφ) ds = Γ f S f (ρu) f φ f = F f φ f (8) f f f
Wprowadzenie - metoda objętości skończonych (60 min) dyskretyzacja równań Dyskretyzacja przestrzenna Operator divergencji φdv = φ ds = S f φ f (9) f Operator gradientu (przykład metody Gaussa) φdv = φds = S f φ f (10) w środowisku OpenFOAM człon φ f może być obliczony przy pomocy różnych schematów interpolacyjnych (schematy 1go i 2go rzędu) f
Wprowadzenie - metoda objętości skończonych (60 min) dyskretyzacja równań Dyskretyzacja czasowa Pierwsza pochodna czasowa (schematy 1go i 2go rzędu) ρφdv = (ρ P φ P ) n (ρ P φ P ) o t t (11) Druga pochodna czasowa (schematu 1go rzędu) ρ φ t t dv = (ρ P φ P ) n 2(ρ P φ P ) o + (ρ P φ P ) oo t 2 (12) indeksy oznaczją: oo - znaną wartość pola dwa kroki czasowe wstecz, o - znaną wartość pola w poprzedniej chwili, n - szukaną warość pola w obecnej chwili
Wprowadzenie - metoda objętości skończonych (60 min) dyskretyzacja równań Przykład dyskretyzacji równania przewodnictwa cieplnego Równanie ciepła T D T = 0 (13) t w postaci całkowiej jest postaci [ ( ) ] T t D T dv dt = 0 (14) t pochodna czasowa używająć schematu Euler Implicit dyskretyzuje się [ ] T t dv (T P V P ) n (T P V P ) o dt = dt = (T P V P ) n (T P V P ) o (15) t t t natomiast operator różniczkowy również przy pomocy schematu Euler Implicit jest postaci [ ] D T dv dt = t DS f ( T ) f dt = DS f ( T n ) f t (16) t f f
Wprowadzenie - metoda objętości skończonych (60 min) dyskretyzacja równań Przykład dyskretyzacji równania przewodnictwa cieplnego Ostatecznie układ równań algebraicznych to zestaw równań obliczanych dla każdej objętości kontrolnej (T P V P ) n (T P V P ) o = DS f ( T n ) f t (17) f
Wprowadzenie - metoda objętości skończonych (60 min) Problemy FVM Największym zarzutem stawianym FVM jest jej niski rząd w istniejących implementacjach. W przypadku dyskretyzacji czasowej FVM jest metodą pierwszego (Euler Implicit/Exlicit) lub drugiego (Crank-Nickolson). W przypadku dyskretyzacji przestrzennej w zależności od schematu numerycznego FVM jest również metodą pierwszego lub drugiego rzędu. Oznacza to, że globalnie zbliżamy się do prawdziwego rozwiązania z dokładnością o(h), gdzie h jest stałą siatki Alternatywy dla FVM Istnieją jeszcze dwie klasyczne metody rozwiązywania równań różniczkowych cząstkowych metoda różnic skończonych FDM metoda elementów skończonych FEM
Wprowadzenie - metoda objętości skończonych (60 min) Metoda różnic skończonych FDM vs. FVM Siatka w przypadku FDM powinna mieć regularną strukturę Metoda FDM jest metodą bardziej dojrzałą - poświęcono jej więcej pracy więc są schematy wyższych rzędów Jeśli w FVM zastosujemy regularną siatkę to układ równań algebraicznych np. dla równania eliptycznego jest tej samej postaci
Wprowadzenie - metoda objętości skończonych (60 min) Metoda elementów skończonych FEM vs. FVM FEM podobnie jak FVM nadaje się do nieustrukturyzowanych siatek FEM jest dyssypatywna, tj. nie zachowuje globalnych wartości poszczególnych pól w przeciwieństwie do FVM ponieważ FEM jest w zasadzie implementacją metody Galerkina istniej wiele teoretycznych opracowań i oszacowań błędów tej metody
blockmeshdg - kompilacja i używanie (30 min) Program szkolenia 1 Dzień II, środa, 29 stycznia Wprowadzenie - metoda objętości skończonych (60 min) blockmeshdg - kompilacja i używanie (30 min) snappyhexmesh - siatki złożone (60 min) Wprowadzenie - turbulencja w OF (60 min) Przykład 2: przepływy turbulentne (90 min) Obliczenia równoległe (30 min) Wprowadzenie - chemia w OF (60 min) Przykład 3: reakcje chemiczne (przypadek prosty) (30 min) 2 przykład 4: reakcje chemiczne (przypadek zaawansowany) (45 min) Wprowadzenie - przepływy dwufazowe (60 min) przykład 5: przepływy dwufazowe (90 min) OpenFOAM - porównanie z Fluentem (45 min) Kompilacja własnego solvera (60 min)
blockmeshdg - kompilacja i używanie (30 min) BlockMeshDG - wygodne zagęszczanie Do ściągnięcia Źródło dodatkowego (nieoficjalnego) narzędzia blockmeshdg, które umożliwia łatwe zagęszanie środkowej części siatki. Do ściągnięcia ze strony twórców (dziękujęmy) https://code.google.com/p/blockmeshdg/ lub ze strony szkolenia blockmeshdg.zip kompilacja - skrypt Allwmake, czyli kompilacja biblioteki poleceniem wmake libso oraz kompilacja aplikacji poleceniem wmake. (w obecnej wersji OF polecenie wmake domyśla się samo czy kompiluje biblioteki czy aplikacje) prosta (choć nieintuicyjna) składnia ze znakiem -, np. simplegrading (1-2 1) w pliku blockmeshdict oznacza, że stworzona siatka będzie mieć komórki dwa razy większe w środku niż przy brzegach.
blockmeshdg - kompilacja i używanie (30 min) BlockMeshDG - wygodne zagęszczanie Zadanie Wykonać siatkę sześcienną 1x1x1 o komórkach w środku dwa razy mniejszych niż na zewnątrz. Czyli taką samą jak siatkę wykonaną we wczorajszym zadaniu. Startujemy z wczorajszego case u kwadrat-start http://www.syngasburner. eu/~ventures/sites/ default/files/scholar/ kwadrat-start.tar.gz
snappyhexmesh - siatki złożone (60 min) Program szkolenia 1 Dzień II, środa, 29 stycznia Wprowadzenie - metoda objętości skończonych (60 min) blockmeshdg - kompilacja i używanie (30 min) snappyhexmesh - siatki złożone (60 min) Wprowadzenie - turbulencja w OF (60 min) Przykład 2: przepływy turbulentne (90 min) Obliczenia równoległe (30 min) Wprowadzenie - chemia w OF (60 min) Przykład 3: reakcje chemiczne (przypadek prosty) (30 min) 2 przykład 4: reakcje chemiczne (przypadek zaawansowany) (45 min) Wprowadzenie - przepływy dwufazowe (60 min) przykład 5: przepływy dwufazowe (90 min) OpenFOAM - porównanie z Fluentem (45 min) Kompilacja własnego solvera (60 min)
snappyhexmesh - siatki złożone (60 min) SnappyHexMesh i meshing skomplikowanych geometrii wykorzystanie siatki wykonanej blockmeshdg import geometrii z plików STL snappyhexmeshdict i jego kontrola
snappyhexmesh - siatki złożone (60 min) SnappyHexMesh - proste geometrie Do ściągnięcia Ściągamy case http://www.syngasburner.eu/~ventures/sites/default/files/ scholar/kulka0.tar.gz. Tworzymy siatkę dla opływu kulki. Zadanie Przygotować siatki dla opływu kulki w taki sposób, aby siatka była rozsądnie zagęszczona. Wykorzystajmy narzędzie blockmeshdg do przygotowania wyjściowej siatki.
snappyhexmesh - siatki złożone (60 min) SnappyHexMesh - przykład 1 - ultra szybki termometr Do ściągnięcia Case UFT (Ultra Fast Thermometer) http: //www.syngasburner.eu/~ventures/sites/default/files/scholar/uft.tar.gz
snappyhexmesh - siatki złożone (60 min) SnappyHexMesh - przykład 1 - ultra szybki termometr Do ściągnięcia Case UFT (Ultra Fast Thermometer) http: //www.syngasburner.eu/~ventures/sites/default/files/scholar/uft.tar.gz
snappyhexmesh - siatki złożone (60 min) SnappyHexMesh - przykład 2 - komora spalania Do ściągnięcia Case komora spalania http://www.syngasburner.eu/~ventures/sites/default/ files/scholar/chamber-start.tar.gz
snappyhexmesh - siatki złożone (60 min) SnappyHexMesh - przykład 2 - komora spalania Do ściągnięcia Case komora spalania http://www.syngasburner.eu/~ventures/sites/default/ files/scholar/chamber-start.tar.gz
snappyhexmesh - siatki złożone (60 min) SnappyHexMesh - co jeszcze Przeszukajmy tutoriale cd $FOAM TUTORIALS find -name snappyhexmesh* Warto zrobić jako ćwiczenie domowe cały tutorial opisany na https://sites.google.com/site/snappywiki/home zajrzeć do oficjalnej dokumentacji http://www.openfoam.org/docs/user/snappyhexmesh.php starannie przeczytać http://openfoamwiki.net/index.php/snappyhexmesh Dodatkowe narzędzia transformpoint -scale (0.001 0.001 0.001)
Wprowadzenie - turbulencja w OF (60 min) Program szkolenia 1 Dzień II, środa, 29 stycznia Wprowadzenie - metoda objętości skończonych (60 min) blockmeshdg - kompilacja i używanie (30 min) snappyhexmesh - siatki złożone (60 min) Wprowadzenie - turbulencja w OF (60 min) Przykład 2: przepływy turbulentne (90 min) Obliczenia równoległe (30 min) Wprowadzenie - chemia w OF (60 min) Przykład 3: reakcje chemiczne (przypadek prosty) (30 min) 2 przykład 4: reakcje chemiczne (przypadek zaawansowany) (45 min) Wprowadzenie - przepływy dwufazowe (60 min) przykład 5: przepływy dwufazowe (90 min) OpenFOAM - porównanie z Fluentem (45 min) Kompilacja własnego solvera (60 min)
Wprowadzenie - turbulencja w OF (60 min) Turbulencja - DNS, RANS, LES LES DNS RANS/RAS DES
Wprowadzenie - turbulencja w OF (60 min) Turbulencja - DNS, RANS, LES LES DNS Direct Numerical Simulations rozwiązujemy bezpośrednio wszystkie skale przepływu czy jesteśmy pewni, że rozwiązujemy wszystkie skale przepływu? RANS/RAS DES
Wprowadzenie - turbulencja w OF (60 min) Turbulencja - DNS, RANS, LES LES DNS Direct Numerical Simulations rozwiązujemy bezpośrednio wszystkie skale przepływu czy jesteśmy pewni, że rozwiązujemy wszystkie skale przepływu? RANS/RAS Reynolds- Averaged Navier- Stokes/Reynolds- Averaged Simulations uśrednianie po czasie i założenie separacji skal czasowych typowe dla zagadnień przemysłowych DES
Wprowadzenie - turbulencja w OF (60 min) Turbulencja - DNS, RANS, LES DNS Direct Numerical Simulations rozwiązujemy bezpośrednio wszystkie skale przepływu czy jesteśmy pewni, że rozwiązujemy wszystkie skale przepływu? RANS/RAS Reynolds- Averaged Navier- Stokes/Reynolds- Averaged Simulations uśrednianie po czasie i założenie separacji skal czasowych typowe dla zagadnień przemysłowych LES Large Eddy Simulations (metoda wielkich wirów) uśrednianie (filtrowanie) po przestrzeni bezpośrednio rozwiązujemy duże skale ruchu (przynajmniej 80% energii) ruchy drobnoskalowe są modelowane podskalowo DES
Wprowadzenie - turbulencja w OF (60 min) Turbulencja - DNS, RANS, LES DNS Direct Numerical Simulations rozwiązujemy bezpośrednio wszystkie skale przepływu czy jesteśmy pewni, że rozwiązujemy wszystkie skale przepływu? RANS/RAS Reynolds- Averaged Navier- Stokes/Reynolds- Averaged Simulations uśrednianie po czasie i założenie separacji skal czasowych typowe dla zagadnień przemysłowych LES Large Eddy Simulations (metoda wielkich wirów) uśrednianie (filtrowanie) po przestrzeni bezpośrednio rozwiązujemy duże skale ruchu (przynajmniej 80% energii) ruchy drobnoskalowe są modelowane podskalowo DES Detached Eddy Simulations łączy RANS i LESem LES tylko, gdy siatka jest odpowiednio gęsta
Wprowadzenie - turbulencja w OF (60 min) Turbulencja w OpenFOAM Podstawowe solwery turbulentne pisofoam - solwer dla przepływów zmiennych w czasie, nieściśliwych, bazujący na algorytmie PISO pimplefoam - solwer dla przepływów zmiennych w czasie, nieśliśliwych bazujący na algorytmie PIMPLE (PIMPLE=PISO+SIMPLE). Dzięki temu możliwe jest pewne zwiększenie kroku czasowego. simplefoam - solwer dla przepływów ustalonych, nieściśliwych, bazujący na algorytmie SIMPLE
Wprowadzenie - turbulencja w OF (60 min) Turbulencja w OpenFOAM Podstawowe solwery turbulentne pisofoam - solwer dla przepływów zmiennych w czasie, nieściśliwych, bazujący na algorytmie PISO pimplefoam - solwer dla przepływów zmiennych w czasie, nieśliśliwych bazujący na algorytmie PIMPLE (PIMPLE=PISO+SIMPLE). Dzięki temu możliwe jest pewne zwiększenie kroku czasowego. simplefoam - solwer dla przepływów ustalonych, nieściśliwych, bazujący na algorytmie SIMPLE Zadanie - Inne solwery turbulentne otwieramy spis wszystkich solwerów dostępny w dokumencji http://openfoam.org/docs/user/standard-solvers.php i wyszkujemy po słowie turbul teraz wyszukujemy po słowie laminar wniosek: zdecydowana większość solwerów może służyć do rozwiązywania problemów turbulentnych pytanie: czy solwery typu multiphase pozwalają rozwiązywać problemy turbulentne?
Wprowadzenie - turbulencja w OF (60 min) Turbulencja w OpenFOAM Czy solwery typu multiphase pozwalają rozwiązywać problemy turbulente? spróbujmy poszukać odpowiedzi w tutorialach cd $FOAM TUTORIALS/multiphase find -name *RAS* mamy odpowiedź! Sprawdźmy ile jest tutoriali dla przypadków turbuletnych.
Wprowadzenie - turbulencja w OF (60 min) Turbulencja w OpenFOAM Czy solwery typu multiphase pozwalają rozwiązywać problemy turbulente? spróbujmy poszukać odpowiedzi w tutorialach cd $FOAM TUTORIALS/multiphase find -name *RAS* mamy odpowiedź! Sprawdźmy ile jest tutoriali dla przypadków turbuletnych. fragment kodu solwera pisofoam fvvectormatrix UEqn ( fvm::ddt(u) + fvm::div(phi, U) + turbulence->divdevreff(u) ); UEqn.relax(); if (momentumpredictor) { solve(ueqn == -fvc::grad(p)); } turbulence->correct();
Wprowadzenie - turbulencja w OF (60 min) Turbulencja w OpenFOAM Więcej o modelach turbulencji Zoologiczna natura modeli turbulencji świetnie współgra z hierarchiczną strukturą kodu Model turbulencji nie jest żadną aplikacją ani solwerem, gdzie go szukać?
Wprowadzenie - turbulencja w OF (60 min) Turbulencja w OpenFOAM Więcej o modelach turbulencji Zoologiczna natura modeli turbulencji świetnie współgra z hierarchiczną strukturą kodu Model turbulencji nie jest żadną aplikacją ani solwerem, gdzie go szukać? modele turbulencji zakodowane są w bibliotekach openfoama znajdziemy je w katalogu $FOAM SRC, czyli gdzie?
Wprowadzenie - turbulencja w OF (60 min) Turbulencja w OpenFOAM Więcej o modelach turbulencji Zoologiczna natura modeli turbulencji świetnie współgra z hierarchiczną strukturą kodu Model turbulencji nie jest żadną aplikacją ani solwerem, gdzie go szukać? modele turbulencji zakodowane są w bibliotekach openfoama znajdziemy je w katalogu $FOAM SRC, czyli gdzie? wchodzimy do katalogu turbulencemodels widzimy osobno modele dla przepływu ściśliwego i nieściśliwego, i osobne dla LES?
Wprowadzenie - turbulencja w OF (60 min) Turbulencja w OpenFOAM Więcej o modelach turbulencji Zoologiczna natura modeli turbulencji świetnie współgra z hierarchiczną strukturą kodu Model turbulencji nie jest żadną aplikacją ani solwerem, gdzie go szukać? modele turbulencji zakodowane są w bibliotekach openfoama znajdziemy je w katalogu $FOAM SRC, czyli gdzie? wchodzimy do katalogu turbulencemodels widzimy osobno modele dla przepływu ściśliwego i nieściśliwego, i osobne dla LES? dla przepływu nieściśliwego możemy zobaczyć wybór modeli typu RAS porównajmy z listą w oficjalnej dokumentacji http://openfoam.org/docs/user/standard-libraries.php
Wprowadzenie - turbulencja w OF (60 min) Turbulencja w OpenFOAM Więcej o modelach turbulencji Zoologiczna natura modeli turbulencji świetnie współgra z hierarchiczną strukturą kodu Model turbulencji nie jest żadną aplikacją ani solwerem, gdzie go szukać? modele turbulencji zakodowane są w bibliotekach openfoama znajdziemy je w katalogu $FOAM SRC, czyli gdzie? wchodzimy do katalogu turbulencemodels widzimy osobno modele dla przepływu ściśliwego i nieściśliwego, i osobne dla LES? dla przepływu nieściśliwego możemy zobaczyć wybór modeli typu RAS porównajmy z listą w oficjalnej dokumentacji http://openfoam.org/docs/user/standard-libraries.php w ten sposób dokopaliśmy się do miejsca, gdzie zakodowany jest konkretny model turbulencji
Wprowadzenie - turbulencja w OF (60 min) Turbulencja w OpenFOAM Więcej o modelach turbulencji Zoologiczna natura modeli turbulencji świetnie współgra z hierarchiczną strukturą kodu Model turbulencji nie jest żadną aplikacją ani solwerem, gdzie go szukać? modele turbulencji zakodowane są w bibliotekach openfoama znajdziemy je w katalogu $FOAM SRC, czyli gdzie? wchodzimy do katalogu turbulencemodels widzimy osobno modele dla przepływu ściśliwego i nieściśliwego, i osobne dla LES? dla przepływu nieściśliwego możemy zobaczyć wybór modeli typu RAS porównajmy z listą w oficjalnej dokumentacji http://openfoam.org/docs/user/standard-libraries.php w ten sposób dokopaliśmy się do miejsca, gdzie zakodowany jest konkretny model turbulencji a jak znaleźć i jak zmienić stałe konkretnego modelu turbulencji?
Wprowadzenie - turbulencja w OF (60 min) Turbulencja w OpenFOAM Więcej o modelach turbulencji Zoologiczna natura modeli turbulencji świetnie współgra z hierarchiczną strukturą kodu Model turbulencji nie jest żadną aplikacją ani solwerem, gdzie go szukać? modele turbulencji zakodowane są w bibliotekach openfoama znajdziemy je w katalogu $FOAM SRC, czyli gdzie? wchodzimy do katalogu turbulencemodels widzimy osobno modele dla przepływu ściśliwego i nieściśliwego, i osobne dla LES? dla przepływu nieściśliwego możemy zobaczyć wybór modeli typu RAS porównajmy z listą w oficjalnej dokumentacji http://openfoam.org/docs/user/standard-libraries.php w ten sposób dokopaliśmy się do miejsca, gdzie zakodowany jest konkretny model turbulencji a jak znaleźć i jak zmienić stałe konkretnego modelu turbulencji? opcja Detailed Description w dokumentacji, podpowiedzi mogą nie zadziałać
Wprowadzenie - turbulencja w OF (60 min) Turbulencja w OpenFOAM Więcej o modelach turbulencji Zoologiczna natura modeli turbulencji świetnie współgra z hierarchiczną strukturą kodu Model turbulencji nie jest żadną aplikacją ani solwerem, gdzie go szukać? modele turbulencji zakodowane są w bibliotekach openfoama znajdziemy je w katalogu $FOAM SRC, czyli gdzie? wchodzimy do katalogu turbulencemodels widzimy osobno modele dla przepływu ściśliwego i nieściśliwego, i osobne dla LES? dla przepływu nieściśliwego możemy zobaczyć wybór modeli typu RAS porównajmy z listą w oficjalnej dokumentacji http://openfoam.org/docs/user/standard-libraries.php w ten sposób dokopaliśmy się do miejsca, gdzie zakodowany jest konkretny model turbulencji a jak znaleźć i jak zmienić stałe konkretnego modelu turbulencji? opcja Detailed Description w dokumentacji, podpowiedzi mogą nie zadziałać co z podejściem DES? Sprawdzamy w dokumentacji
Wprowadzenie - turbulencja w OF (60 min) Turbulencja w OpenFOAM Ćwiczenia jakie są modele RAS dla przepływów ściśliwych co to jest: devreff jakie stałe ma zdefiniowane model realizableke Pomocne narzędzia związane z turbulencją Dla kompletności sprawdźmy jeszcze zestaw narzędzi, które mogą się przydać podczas modelowania przypadków w których występuje ruch turbulentny sprawdźmy na stronie http://openfoam.org/docs/user/standard-utilities.php szczególnie pożyteczne jest mapfields zktóregokatalogubierzemy -consistent
Przykład 2: przepływy turbulentne (90 min) Program szkolenia 1 Dzień II, środa, 29 stycznia Wprowadzenie - metoda objętości skończonych (60 min) blockmeshdg - kompilacja i używanie (30 min) snappyhexmesh - siatki złożone (60 min) Wprowadzenie - turbulencja w OF (60 min) Przykład 2: przepływy turbulentne (90 min) Obliczenia równoległe (30 min) Wprowadzenie - chemia w OF (60 min) Przykład 3: reakcje chemiczne (przypadek prosty) (30 min) 2 przykład 4: reakcje chemiczne (przypadek zaawansowany) (45 min) Wprowadzenie - przepływy dwufazowe (60 min) przykład 5: przepływy dwufazowe (90 min) OpenFOAM - porównanie z Fluentem (45 min) Kompilacja własnego solvera (60 min)
Przykład 2: przepływy turbulentne (90 min) Przykład 3. Turbulencja Do ściągnięcia Zaczynamy od oplywu cylindra, ściągamy case http://www.syngasburner.eu/ ~ventures/sites/default/files/scholar/case-turb-start.tar.gz Zadanie Policzmy ten case solwerem pisofoam. Rozwiążmy wszystkie pojawiające się trudności. w szczególności trudności związane z funkcjami przyściennymi spróbujmy zainicować pole prędkości rozwiązaniem case u laminarnego wykorzystajmy to tego narzędzie mapfields
Przykład 2: przepływy turbulentne (90 min) Przykład 3. Turbulencja Zadanie - chyba w domu Policzyć liczbę Reynoldsa Re = UL. Zwiększamy Re ν case 2a zwiększamy U case 2b zwiększamy L case 2c zmiejszamy ν Zadanie zmieńmy wykorzystany model turbulencji na realizableke zmodyfikujmy stałe modelu realizableke ustawny warunki brzegowe na k i ɛ zgodnie ze wzorami k = 0.5U U i ɛ = C0.75 µ k 1.5 (lub innymi) l
Przykład 2: przepływy turbulentne (90 min) Przykład 3. Turbulencja, model LES Zadanie - tworzymy samodzielnie prosty case LES Plan gry: zagęszczamy siatkę szukamy odpowiedniego case u z tutoriala modyfikujemy: katalog constant katalog system warunki początkowe i brzegowe próbujemy uruchomić inicjalizujemy próbujemy uruchomić ponownie
Obliczenia równoległe (30 min) Program szkolenia 1 Dzień II, środa, 29 stycznia Wprowadzenie - metoda objętości skończonych (60 min) blockmeshdg - kompilacja i używanie (30 min) snappyhexmesh - siatki złożone (60 min) Wprowadzenie - turbulencja w OF (60 min) Przykład 2: przepływy turbulentne (90 min) Obliczenia równoległe (30 min) Wprowadzenie - chemia w OF (60 min) Przykład 3: reakcje chemiczne (przypadek prosty) (30 min) 2 przykład 4: reakcje chemiczne (przypadek zaawansowany) (45 min) Wprowadzenie - przepływy dwufazowe (60 min) przykład 5: przepływy dwufazowe (90 min) OpenFOAM - porównanie z Fluentem (45 min) Kompilacja własnego solvera (60 min)
Obliczenia równoległe (30 min) Obliczenia równoległe Obliczenia mechaniki płynów pochłaniają dużo mocy obliczeniowej. Często chcemy je uruchomić na kilku procesorach. OpenFOAM jest zaimplementowany z myślą o silnym zrównoleglaniu. Korzysta z bibliotek MPI. Na linuxie aplikacje zrównolegloną przy użyciu MPI uruchamiamy w następujący sposób: mpirun -n liczbawątków program Przykład z OpenFOAM a: mpirun -n 4 simplefoam -parallel > log & Opcja -parallel jest dodawana do każdej aplikacji stworzonej na bazie OpenFOAM a, uruchamianej równolegle. decomposepar obliczenia
Wprowadzenie - chemia w OF (60 min) Program szkolenia 1 Dzień II, środa, 29 stycznia Wprowadzenie - metoda objętości skończonych (60 min) blockmeshdg - kompilacja i używanie (30 min) snappyhexmesh - siatki złożone (60 min) Wprowadzenie - turbulencja w OF (60 min) Przykład 2: przepływy turbulentne (90 min) Obliczenia równoległe (30 min) Wprowadzenie - chemia w OF (60 min) Przykład 3: reakcje chemiczne (przypadek prosty) (30 min) 2 przykład 4: reakcje chemiczne (przypadek zaawansowany) (45 min) Wprowadzenie - przepływy dwufazowe (60 min) przykład 5: przepływy dwufazowe (90 min) OpenFOAM - porównanie z Fluentem (45 min) Kompilacja własnego solvera (60 min)
Wprowadzenie - chemia w OF (60 min) Wprowadzenie reackji chemicznych do równań przepływu Standardowe solvery uwzględniające reakcje chemiczne w OpenFOAM chemfoam - rozwiązywanie sztywnych równań reakcji chemicznych. reactingfoam - przepływ z reakcjami chemicznymi gazu wielkoskładnikowego firefoam - przepływ z reakcjami chemicznymi i turbulentną dyfuzjią płomieni gazu wieloskładnikowego XiFoam - przepływ ściśliwy z turbulencją i reakcjami typu premixed gazu dwuskładnikowego reactingparcelfoam - przepływ ściśliwy z turbulencją, reakcjami chemicznymi i reagującymi cząstkami Lagrange owskimi gazu wieloskładnikowego
Wprowadzenie - chemia w OF (60 min) Wprowadzenie reackji chemicznych do równań przepływu Reakcje chemiczne abstrakcyjnie Reakcje chemiczne wnoszą do problemu i solvera kilka nowych zagadnień model reakcji np. gaz wielkoskładnikowy z równaniami reakcji chemicznych lub paliwo-utleczniacz z zadanymi prędkościami płomienia typu premixed równania transportu substratów i produktów ρy i t + (ρuy i ) (ρd Y i ) = ω i (18) lub równania transportu postępu reakcji (b = 0 - reakcja w pełni zaszła, b = 1 reakcja nie zaszła) ρb t + (ρub) (µρd Y i) = ρs c (19) własności termodynamiczne substratów i produktów np. równanie stanu, entalpia tworzenia, energia wewenętrzna, współczynniki transportu... schematy reakcji chemicznych wraz z ich parametrami. dodatkowy człon źródłowy w równaniu energii, związany z reakcjami chemicznymi
Wprowadzenie - chemia w OF (60 min) Własności termodynamiczne: nowe pliki kontrolne W katalogu constant pojawią się nowe pliki w zależności od wybranego solvera thermophysicalproperties - model termodynamiczny gazu combustionproperties - model reakcji chemicznej jeśli solver dopuszcza taki wybór chemistryproperties - parametry solvera reakcji chemicznych oraz pliki z właśnościami termodynamicznymi poszczególnych składników i schematami reakcji chemicznych albo w formacie natywnym dla OpenFOAM albo w standardzie CHEMKIN
Wprowadzenie - chemia w OF (60 min) Własności termodynamiczne gazów. Plik constant/thermophsicalproperties thermotype { type mixture transport thermo hepsithermo; reactingmixture; sutherland; janaf; sensibleenthalpy; energy equationofstate perfectgas; specie specie; } inertspecie N2; chemistryreader foamchemistryreader; //chemkinreader; foamchemistryfile "$FOAM_CASE/constant/reactions"; CHEMKINFile "$FOAM_CASE/chemkin/chem.inp"; CHEMKINThermoFile "$FOAM_CASE/chemkin/therm.dat";
Wprowadzenie - chemia w OF (60 min) Własności termodynamiczne gazów. Plik constant/thermophsicalproperties type hepsithermo; Równanie energii obliczane w oparciu o energię wewnętrzną e lub entalpię swobodną h s i ściśliwość ψ = 1 dla gazu doskonałego. W zależności od RT solvera (np. rhoreactingfoam) możemy też wybrać model oparty na gęstości. mixture reactingmixture; Opcja pozwalająca wybrać jak obliczane są wspólne własności mieszaniny np. jaka ma być lepkość lub sumaryczna energia wewenętrzna mieszaniny Zależnie od problemu możemy mieć mieszaninę dwu składnikową albo wieloskładnikową o różnych własnościach transport sutherland; Model współczynnika transportu. Może być stały (const), zadany przez równanie Sutherladna µ = As T lub w niektórych solverach poprzez wielomian. 1+T s/t
Wprowadzenie - chemia w OF (60 min) Własności termodynamiczne gazów. Plik constant/thermophsicalproperties thermo janaf; Wybór sposobu w jaki obliczane jest ciepło właściwe w zależności od temperatury. Do wyboru jest model stałej pojemności cieplnej i entalpii tworzenia a także wielomiany JANAF. Każdą z tych własności definiujemy dla każdego ze składników jednak model wg. jakiego będą obliczane jest w domyślnych solverach jednakowy dla wszystkich składników. energy sensibleenthalpy; Wybór, czy temperaturę będziemy rozwiązywali w oparciu o równanie transportu energii wewnętrznej czy entalpii swobodnej. Możliwość wyboru w tym słowniku w trakcie wykonywania programu jest nowością w wersji 2.2.x. equationofstate perfectgas; Równanie stanu gazu. W niektórych solverach, np. opisujących ruch cieczy możemy zadać je także poprzez wielomian