Generacja siatki na potrzeby symulacji komputerowej przepływu jest istotnym elementem w całym procesie przygotowania modelu. Od jakości i gęstości siatki zależy jakość uzyskanych w symulacji wyników, jednocześnie proces generacji siatki może być bardzo pracochłonny, w wielu przypadkach określając efektywność danego projektu. Programy do generacji siatek obliczeniowych oferują różne podejścia i możliwości, próbując skrócić zarówno czas manualnej pracy z modelem jak i czas jaki potrzebują same algorytmy siatkujące. Jednym z nich jest program ANSYS Fluent Meshing (następca systemu TGrid).
Razem z wydaniem ANSYS Workbench w wersji 15.0 TGrid stał się integralną częścią programu Fluent, jednocześnie wprowadzonych do niego zostało szereg nowych opcji. Jedną z ważniejszych nowości w programie jest możliwość bezpośredniego wczytania geometrii w jednym z formatów CAD (w TGrid formatem wejściowym była powierzchniowa siatka trójkątna). Obecnie program Fluent stał się platformą, w której mamy możliwość przygotowania modelu do analizy, bez korzystania z dodatkowych programów.
Naszym celem będzie generacja siatki powierzchniowej obliczeniowej fragmentu katalizatora samochodu osobowego. Dostarczona geometria w formacie CAD przedstawiona jest na rysunku 1.

Pierwszym etapem pracy jest import geometrii do programu ANSYS Fluent Meshing. Podczas importu program dokonuje teselacji (fasetowania) geometrii, w wyniku której powstaje powierzchniowa siatka trójkątna. Przy ustawieniach domyślnych stworzona siatka powierzchniowa będzie stosunkowo rzadka (podobny efekt można uzyskać przy eksporcie geometrii fasetowej z programu Gambit) i służy do obejrzenia modelu i identyfikacji rozmiaru elementów istotnych z punktu widzenia symulacji. Po inspekcji modelu jako minimalny rozmiar elementów przyjmujemy 0,5 mm, a jako maksymalny 16 mm. Dokonujemy ponownego importu, tym razem z włączoną opcją Conformal Tesselation. Kontroluje ona dokładność odwzorowania geometrii za pomocą Funkcji Rozmiaru (Size Function), zagęszczając siatkę na krzywiźnie i w szczelinach. Jako kąt zagęszczenia krzywizn (Curvature Normal Angle) podajemy 15o (co odpowiada dużej dokładności odwzorowania krzywizny). Dodatkowo zaznaczamy opcję Edge Proximity i wpisujemy 1, jako liczbę komórek w szczelinie. Po ponownym imporcie uzyskujemy znacznie dokładniejszą siatkę trójkątów odwzorowującą kształt katalizatora (Rys. 2). Należy zwrócić uwagę, że nie jest to jeszcze siatka, którą możemy wykorzystać na potrzeby analizy CFD.


Kolejnym krokiem będzie przygotowanie obszaru, w którym będziemy chcieli wygenerować siatkę powierzchniową o wysokiej jakości, poprzez przeprowadzenie tzw. wrappingu (polskim odpowiednikiem może być: opakowywanie). Będzie to fragment katalizatora w pobliżu czujnika. Aby ograniczyć obszar po stronie płynu musimy stworzy powierzchnię zamykającą na wlocie do układu. W tym celu w menu Caps wybieramy, klikając prawym przyciskiem myszy (PPM), jedną z krawędzi tworzących wlot do katalizatora, podajemy nazwę inlet, wybieramy typ powierzchni jako velocity inlet i klikamy Create (Rys. 3.).

Aby móc obejrzeć geometrię również od środka skorzystamy z opcji wyświetlenia tylko połowy modelu – Insert Clipping Planes. Obudowa katalizatora składa się z dwóch stykających się połówek. Przed przeprowadzeniem operacji wrap dobrym zwyczajem jest połączenie ze sobą elementów tworzących całość. Wybieramy dwa obiekty poprzez włączenie filtru wyboru obiektów (skrót klawiaturowy Ctr+b i PPM) i wydajemy polecenie sklejenia poprzez Ctr+Shift+m. Operację powtarzamy, wybierając jeszcze raz te same obszary, tym razem po włączeniu filtru wyboru stref (Ctr+z). Jednocześnie przy inspekcji siatki zauważamy w pobliżu otwór. Otwór możemy załatać ręcznie poprzez zaznaczenie trzech węzłów (Ctr+n i PPM) i na ich podstawie tworząc trójkątną powierzchnię (klawisz f5). Stworzony element zostanie automatycznie dołączony do jednego z obiektów, którego węzły wybieraliśmy (Rys. 4). Powtarzamy operację dla trzech pozostałych otworów.

Kolejnym krokiem będzie zaznaczenie siedmiu obiektów (Ctr+b i PPM) ograniczających naszą objętość przepływową w oknie Objects i zmiana ich typu na wrap (Rys. 5). Zdefiniujemy również punkt materialny, który powinien mieścić się wewnątrz objętości przepływowej. Aby to zrobić klikamy Material Points, następnie albo podajemy współrzędne punktu materialnego, albo wskazujemy jedną z powierzchni obudowy naszego katalizatora (Ctr+z i PPM) i klikamy Compute – obliczone zostaną współrzędne jej środka geometrycznego. Następnie nadajemy nazwę definiowanemu punktowi i klikamy Create.

Następnie wykorzystamy opcję diagnostyki do znalezienia szczelin występujących w modelu. Po kliknięciu opcji Diagnostics zaznaczamy interesujące nas obiekty poprzez pojedyncze kliknięcie w Object Types wrap. W Marking Options podajemy minimalny i maksymalny rozmiar szczeliny. Dobrym zwyczajem jest podanie połowy i dwukrotności minimalnej długości podanej podczas importu modelu, w naszym przypadku będzie to zatem 0,25 mm i 1 mm. Po kliknięciu Mark wyświetlone zostaną szczeliny występujące w modelu.

Na początku zajmiemy się szczeliną w okolicy czujnika (Rys. 7). Zaznaczamy jeden z elementów powierzchniowych na powierzchni zewnętrznej czujnika (Ctr+f i PPM). Dla ułatwienia rzutowania powierzchni oddzielimy ją od reszty czujnika (Ctr+Shift+s). Operację powtarzamy dla powierzchni na obudowie katalizatora. Aby zamknąć szczelinę poprzez wykonanie rzutowania wybieramy boczną powierzchnię czujnika (Ctr+z i PPM), wciskamy Ctr+s definiując ją jako powierzchnię, na która ma się odbyć rzutowanie, następnie wybieramy powierzchnie rzutowaną (PPM) i wciskamy Ctr+p.

Lokalizujemy drugą szczelinę (Rys. 8). Jest ona innego rodzaju – tutaj dwie powierzchnie schodzą się pod małym kątem, co będzie źródłem problemów podczas generacji siatki objętościowej. Jako że obszar, który chcemy zmodyfikować jest niewielki, rzutowanie całych powierzchni może wygenerować niepożądane efekty. Zamiast tego wykorzystamy narzędzie dedykowane do usuwania szczelin. Podobnie jak poprzednio zaznaczamy powierzchnię, która nie będzie modyfikowana (Ctr+z i PPM) i wciskamy Ctr+s, następnie wybieramy drugą powierzchnię (PPM), ale tym razem zamiast operacji rzutowania (Ctr+p) wybieramy operację zamykania szczelin (Ctr+k). Po pojawieniu się okienka dialogowego modyfikujemy maksymalny rozmiar szczeliny na 1 mm (zgodnie z podaną wartością przy wyszukiwaniu szczelin) i zatwierdzamy operację.

Aby sprawdzić czy obszar który chcemy siatkować jest już zamknięty wykorzystamy opcję śledzenia wycieków (ang. leakage). Klikamy Fix Holes, zaznaczamy wszystkie obiekty typu wrap i klikamy Find Holes. Znalezione przez program nieszczelności możemy wyświetlić, wybierając zdefiniowany wcześniej punkt materialny i wybierając opcję Trace. W naszym przypadku powinniśmy zobaczyć przynajmniej jeden przeciek (Rys. 9). Jest to otwór w czujniku. Jego zamknięcie będzie stosunkowo proste: należy powtórzyć procedurę przeprowadzoną przy tworzeniu powierzchni wlotowej to katalizatora.

Mając pewność, że model jest szczelny możemy przeprowadzić operację wrappingu (opakowywania). Po kliknięciu Wrap wybieramy wszystkie obiekty typu wrap, stworzony wcześniej punkt materialny, ustawiamy dokładność odtworzenia geometrii (Geometry Recovery) na wysoką (High) i zatwierdzamy operację. Zostaje wygenerowana siatka powierzchniowa, jednak jakość odwzorowania krawędzi nie jest zadowalająca (Rys. 10). Aby siatka dokładnie odwzorowywała krawędzie konieczne będzie przeprowadzenie operacji ich wydobycia z zaimportowanej geometrii. Wykonujemy to w oknie Objects. Wybieramy interesujące nas obiekty i w zakładce Operations klikamy Extract, a następnie zaznaczamy podopcję Collectively i klikamy Create. Po wydobyciu krawędzi możemy ponownie dokonać operacji wrappingu. Tym razem efekt jest zadowalający. Jeśli parametr skewness siatki powierzchniowej jest powyżej 0,7 możemy wykorzystać narzędzia poprawy jakości siatki znajdujące się w oknie Diagnostic Tools. Tak przygotowana siatka stanowi bazę do przeprowadzenia generacji wysokiej jakości siatki objętościowej.

W niniejszym artykule została przedstawiona jedna z możliwych metod pracy z siatką, jaką oferuje program ANSYS Fluent Meshing. Niewątpliwie metodyka siatkowania różni się od tych, znanych z programów ANSYS Meshing, ICEM CFD czy też Gambit. Sam program jest przeznaczony dla zaawansowanych użytkowników i przy nauce wymaga większego nakładu pracy w porównaniu z innymi programami do siatkowania. W zamian program oferuje szereg opcji niedostępnych gdzie indziej. Warto rozważyć wykorzystanie programu szczególnie w następujących przypadkach:
- Skomplikowana geometria z licznymi błędami;
- Generacja bardzo dużych siatek czworościennych z warstwą przyścienną;
- Praca na geometrii w formacie .stl (np. geometria pochodząca z badań tomograficznych lub skanerów 3d)
- Poprawa jakości już istniejących siatek czworościennych;
Na rysunku 11 przedstawiono zestawienie programów siatkujących firmy ANSYS pod kątem ich zastosowania.

W celu uzyskania pliku z geometrią katalizatora do samodzielnego przeprowadzenia ćwiczenia należy wysłać mail do apiechna@symkom.pl. W ramach ćwiczenia zachęcam do wygenerowania siatki na całym modelu katalizatora.
Adam Piechna
artykuł pochodzi z wydania 10 (85) październik 2014