18 kwietnia 2024


Złożoność świata zdaje się być nie do ogarnięcia dla ludzkiego rozumu. Niemniej, każdy z nas od urodzenia stara się go zrozumieć. W przypadku dzieci osiągany cel jest sumą doświadczeń z małych i z pozoru nie tak ważnych zadań. Dzięki takiemu podejściu każdy z nas nauczył się nowych pojęć i narzędzi, które dziś pozwalają na lepsze zrozumienie otaczającego nas świata.

Sławomir Polański

Analogiczna sytuacja miała miejsce w historii komputerów. To nieustanna praca nad udoskonaleniem technologii spowodowała, że z maszyny o możliwościach kalkulatora człowiek zbudował urządzenie wspomagające podejmowanie najważniejszych decyzji. Przy pomocy matematyki i fizyki dzisiejsze komputery umożliwiają także rozkładanie na czynniki pierwsze całej złożoności świata, a tym samym ułatwiają nam zrozumienie otaczających nas zjawisk. W przyrodzie często występują zjawiska sprzężone, tj. takie, w których przyczyna wywołuje skutek innej natury fizycznej. Przykładem może być sytuacja, kiedy w podgrzewanym pręcie następuje wzrost temperatury (zjawisko termiczne) oraz wydłuża się jego długość (zjawisko mechaniczne). Przypadek ten jest dość prosty i istnieją równania fizyczne pozwalające opisać, jaki wpływ ma temperatura na wydłużenie pręta. Co jednak, gdy chcemy zrozumieć bardziej skomplikowane zjawiska np. jaki wpływ ma wiatr na niestabilne zachowanie sygnalizacji świetlnej?

W takich sytuacjach warto wykorzystać symulacje komputerowe. Najlepiej – w powyższym przypadku – stworzyć taką symulację, w której jeden wyspecjalizowany program będzie opisywał zachowanie powietrza, a drugi skupi się na odtworzeniu zachowań konstrukcji. Takie analizy nazywamy sprzężonymi i w tym artykule postaram się przybliżyć jak je tworzyć przy wykorzystaniu oprogramowania XFlow i Simpack. Wpierw jednak chciałbym nieco przybliżyć charakterystykę obu oprogramowań.

XFlow jako przykład implementacji technologii Lattice-Boltzmann
XFlow jest oprogramowaniem do symulacji w dziedzinie mechaniki płynów. Choć jest na rynku zaledwie od 2011 roku, to bardzo szybko znalazł grono użytkowników dostrzegających w nim potencjał. Wszystko to za sprawą technologii ukrytej w solwerze. W porównaniu do dostępnych oprogramowań CFD opartych na rozwiązywaniu równań Naviera-Stokesa XFlow wykorzystuje metodę siatkową Boltzmanna (ang. Lattice Boltzmann Method, LBM). Główna różnica w tych podejściach wynika ze sposobu, w jaki podjęta jest próba opisu zachowania płynu. W silnikach numerycznych opartych o równania NS płyn traktowany jest jako ośrodek ciągły, w którym zaniedbano cząsteczkową budowę.

01 XFLOW sail
Rys. 1 Wykorzystanie pakietu XFlow przy modelowaniu jachtów. Źródło: WB-Sails

Metoda LBM wykorzystuje równania kinetyczne Boltzmanna do opisu zachowania płynu jako zbioru cząsteczek. W oparciu o statystyczny opis kolizji cząsteczek na poziomie mezoskopowym użytkownik otrzymuje obraz zachowania płynu na poziomie makroskopowym. Tym samym zachowanie płynu zdefiniowane jest na podstawie bardziej fundamentalnych zasad fizyki. Warto tu odnotować, że matematykom udało się wykazać równoważność pomiędzy opisem płynu przy pomocy równań Naviera-Stokesa i równań Boltzmanna.

Co to jednak oznacza dla typowego użytkownika? Przede wszystkim to, że metoda LBM bazuje na liniowych równaniach różniczkowych, co znacznie skraca czas obliczeń. Jest również bardzo dobrze skalowalna, tzn. efektywnie wykonywane są obliczenia na wielu procesorach CPU. Co więcej, od wersji XFlow 2020 umożliwione są obliczenia wykorzystujące architekturę GPU w kartach graficznych. Ten zabieg pozwala zredukować czas obliczeń jeszcze bardziej. Jak powszechnie wiadomo, równie ważne jest to, ile czasu należy poświęcić na budowę modelu. Tutaj również LBM wiedzie prym, ponieważ użytkownik nie jest zmuszany do tworzenia siatki. Siatka generowana jest automatycznie przez program i wymagane jest jedynie wprowadzenie kilku parametrów związanych z jej rozdzielczością.

04 XFlow Nastran
Rys. 2 Analiza aero-strukturalna spadochronu wykorzystująca sprzężenie XFlow-Adams. Źródło: 3DS

Oczywiście istnieją też dziedziny, w których solwery wykorzystujące równanie NS zdają się lepszym rozwiązaniem. Przykładem mogą być symulacje płynów ściśliwych, które, choć da się je modelować przy pomocy LBM, to nie tak efektywnie. Mimo to, technologia Lattice Boltzman użyta w programie XFlow umożliwia bardzo wiele, począwszy od symulacji przepływów (jedno – lub wielofazowych oraz typu Free surface) poprzez transfer ciepła, skończywszy na aeroakustyce.

XFlow rzeczywistosc
Rys. 3 Porównanie wyników z eksperymentu z wynikami z XFlow [1]

Simpack jako przykład implementacji technologii Rigid Body Dynamics
Simpack jest oprogramowaniem do symulacji ruchu mechanizmów złożonych z brył sztywnych. Bazuje on na technologii, która w pewnym sensie jest uproszczoną wersją metody elementów skończonych. Przy czym przymiotnik „uproszczoną” zdaje się dość niefortunnym określeniem. Ktoś mógłby pomyśleć, że oprogramowanie może być użyte tylko do modelowania prostych zagadnień. Tymczasem jest zupełnie na odwrót — pakiet został stworzony, by modelować wieloczłonowe mechanizmy o nadzwyczaj skomplikowanym zachowaniu. Dzięki założeniu, że obiekty są nieodkształcalne, czas obliczeń zmienia się diametralnie. W Simpack niemal wszystkie modele rozwiązywane są w czasie rzeczywistym. Innymi słowy, użytkownik poprzez uruchomienie procedury Online integration może sprawdzić, jak będzie się zachowywał zaprojektowany przed momentem mechanizm. Oczywiście, modele o bardziej wyszukanej budowie będą liczyły się dłużej, może nawet kilka dni. Będą to jednak np. modele pojazdu z uwzględnieniem pełnego zawieszenia i silnika, testowane w dowolnych warunkach zewnętrznych. Taka szczegółowość modelu jest nieosiągalna np. przy użyciu metody elementów skończonych.

03 SIMPACK Turbina Wiatrowa
Rys. 4  Przykład turbiny wiatrowej zamodelowanej w pakiecie Simpack. Źródło: Simpack

Założenie o nieodkształcalności brył ma wpływ nie tylko na to, jak zachowuje się model, ale również na to, z jakimi danymi wyjściowymi mamy do czynienia. Wyniki zazwyczaj składają się z przemieszczeń, prędkości, przyspieszeń oraz sił i momentów. Niemniej Simpack ma całą bibliotekę tzw. Force elements, które służą do modelowania interakcji pomiędzy poszczególnymi członami układu. Dostępne są elementy odwzorowujące m.in. sprężyny i tłumiki o nieliniowej charakterystyce, elementy odwzorowujące łożyska, silniki elektryczne, przekładnie mechaniczne, oddziaływania kontaktowe i wiele innych. Wszystkie te elementy posiadają swoje własne dane wyjściowe, charakterystyczne dla ich zastosowania.

Simpack Wyniki
Rys. 5  Przykładowe wyniki w programie Simpack

Podsumowując, warto również wspomnieć, że pakiet Simpack umożliwia symulacje z uwzględnieniem ciał odkształcalnych. Istnieje kilka sposobów, by tego dokonać, a najbardziej rozpowszechniony polega na wykorzystaniu metody redukcji stopni swobody Craiga-Bamptona. W gruncie rzeczy, procedura ta polega na przygotowaniu zredukowanego modelu w oprogramowaniu MES i zaimportowaniu go do pakietu Simpack. W przypadku Abaqusa proces redukcji odbywa się poprzez zdefiniowanie zadania typu Substructure generation. W ten sposób użytkownik jest w stanie uwzględnić odkształcalność pewnych ciał w czasie analizy.

Część praktyczna – sprzężenie XFlow-Simpack
Jako przykład praktyczny sprzężenia XFlow-Simpack użyty zostanie model zaworu, którego zasada działania przypomina wahadło sprężynowe (Rys. 6). W tym mechanizmie płyn oddziałujący na kulę powoduje wzrost ciśnienia na jej powierzchni, w wyniku czego kula odrywa się od ścianek zaworu i umożliwiony jest dalszy przepływ płynu.

Zawor
Rys. 6  Schemat zaworu [2]

Pierwszym krokiem, jaki należy wykonać, jest budowa modelu w pakiecie XFlow. W tym celu należy przygotować geometrię CAD, składającą się z zewnętrznej powierzchni zaworu, kuli oraz dwóch powierzchni kołowych (część wlotowa i wylotowa). Geometrię CAD importujemy poprzez wybranie w Menu Głównym — Geometry — Import a new geometry. Pakiet umożliwia import geometrii w kilku formatach, m.in. w IGS, STEP czy STL. Na potrzeby tego modelu geometria została stworzona w formacie STL, gdyż taki format rozpoznawany jest przez pakiet Simpack. Po wykonaniu operacji importu położenie brył definiujemy w zakładce Geometry. Zachowanie zaworu, wlotu i wylotu należy określić jako Fixed. Kolejnym krokiem jest definicja warunków brzegowych. Powierzchnia zaworu ogranicza domenę analizy, z tego powodu definicja typu Wall będzie dla niej odpowiednia. Na powierzchni wlotowej zdefiniowany zostanie strumień masy o wartości if(t<0.5,0.3,0). Funkcja ta oznacza, że dla czasu t < 0.5 sekundy strumień masy wynosi 0,3 kg/s. Dla każdej innej wartości czasu strumień masy jest równy 0. Z kolei dla powierzchni wylotowej jako warunek brzegowy przyjęty zostanie typ Pressure outlet z wartością 0 Pa (Rys. 7).

Xflow Wyglad
Rys. 7 Model zaworu w programie XFlow

Następnym krokiem jest określenie położenia kuli. W przypadku rozpatrywanego modelu należy umiejscowić ją w środku zaworu. Jest tak dlatego, że wychylenie od stanu początkowego będzie zdefiniowane w pakiecie Simpack. Celem zdefiniowania poprawnego zachowania bryły należy wybrać typ Enforced oraz warunek brzegowy Wall. Tak zdefiniowana geometria pozwala nam na przejście do kolejnego kroku, jakim jest określenia warunków pracy solwera. W tym celu, w zakładce Environment należy przyjąć wymiar analizy jako 3D, model przepływu jako jednofazowy oraz typ analizy Internal. Dodatkowo przyjęto zerowe warunki początkowe dla rozpatrywanego modelu. W zakładce Materials istnieje możliwość zmiany definicji przyjętego płynu. W XFlow parametry domyślne definiują zachowanie powietrza i ten model zostanie użyty w symulacji zaworu. Następnie, w zakładce Simulation należy zdefiniować długość symulacji oraz wielkość siatki.

Na tym etapie prace w pakiecie XFlow dobiegają końca. Ostatnim krokiem jest zdefiniowanie, w jaki sposób symulacja CFD będzie komunikować się z programem Simpack. W tym celu wykorzystanie zostanie protokół FMU (Functional Mockup Interface), który umożliwia wysyłanie danych między pakietami w czasie trwania analizy. Dostęp do interfejsu FMU jest możliwy w zaawansowanym module Lab. Aktywować go można poprzez wejście Menu Główne — Options — Preferences — Application mode. Kolejnym krokiem będzie poinformowanie XFlow, które informacje powinny być wysyłane do pakietu Simpack. W tym celu z Menu Głównego wybieramy zakładkę Options, a następnie Export to FMI standard. Oprogramowanie automatycznie wyświetli listę danych wejściowych i wyjściowych (Rys. 8).

FMI export
Rys. 8 Dane wejścia i wyjścia z pakietu XFlow

W naszym przypadku, dane wejściowe to te, które wysyłać będzie Simpack, więc w definicji wybieramy przemieszczenie kuli w kierunku osiowym. Danymi wyjściowymi są informacje dotyczące siły oddziałującej na kulę, które XFlow określi na podstawie ciśnienia płynu i powierzchni kuli. W momencie kliknięcia przycisku Accept XFlow automatycznie zmieni odpowiednią wartość w definicji geometrii kuli na wartość fmi(). W ten sposób informuje nas o tym, że poszczególna informacja zostanie dostarczona przez protokół FMI. Celem zakończenia budowy modelu w XFlow należy kliknąć przycisk Run i wybrać opcję Start FMU computation. Dzięki temu zostanie przeprowadzona weryfikacja modelu, a następnie oprogramowanie będzie oczekiwać sygnałów z interfejsu FMI.

Kolejny krokiem jest budowa modelu w pakiecie Simpack. Najpierw należy stworzyć obiekt Body typu CAD interface i wczytać plik STL zawierający geometrię kuli. W zakładce Mass properties istnieje możliwość wprowadzenia gęstości materiału. W oparciu o te dane Simpack obliczy masę, środek ciężkości i tensor bezwładności. Po zdefiniowaniu obiektu kuli, warto również stworzyć referencyjną geometrię zaworu. Geometria referencyjna będzie potrzebna w definicji oddziaływań kontaktowych (element typu Force 199) i należy zdefiniować ją na poziomie Reference Systems — Geometry (Rys. 9).

Simpack model
Rys. 9 Model w pakiecie Simpack

Oprogramowanie dla każdego obiektu Body generuje przegub Joint, który określa ilość stopni swobody mechanizmu. W naszym przypadku kula będzie miała tylko jeden stopień swobody i będzie to przemieszczenie w kierunku osiowym zaworu. Należy zatem zmienić typ przegubu na Prismatic oraz określić położenie wstępne kuli na takie, by jej powierzchnia stykała się z powierzchnią zaworu (jak na rysunku 9). Kolejnym krokiem będzie zdefiniowanie elementu Force, który odzwierciedlać będzie sprężynę. Najprostszy typ Linear Spring PtP będzie odpowiedni dla naszej analizy. Wymaga on sprecyzowania nominalnej długości sprężyny (wartość równa początkowemu przemieszczeniu zdefiniowanemu na poziomie Joint) i sztywności przyjętej jako 150 N/m.

Model stworzony w ten sposób nie ma żadnej siły wymuszającej, a głównym założeniem było, by Simpack pobierał wartość tej siły z XFlow. Celem nawiązania komunikacji między tymi dwoma pakietami należy stworzyć pętlę przedstawioną na rysunku 10.

Petla
Rys. 10 Pętla zdefiniowana w programie Simpack

Control element 238: FMI Import jest elementem odpowiedzialnym za przesyłanie informacji między pakietami. W jego definicji należy zdefiniować lokalizację pliku z rozszerzeniem .fmu, który został wygenerowany na etapie tworzenia modelu CFD. Po zaimportowaniu pliku Simpack automatycznie rozpozna parametry wejścia i wyjścia zdefiniowane w XFlow. W tym przypadku parametrem wejścia jest przemieszczenie kuli. Należy zatem zdefiniować element typu Control 160: Joint State Sensor, który w czasie symulacji będzie informował solwer o położeniu kuli. Następnie, utworzenie elementu Expression z definicją FORCEOV($C_FMI,1) umożliwi wydobycie informacji o sile wymuszającej z elementu FMI. Kolejno, wspomniany element Expression zostanie użyty w definicji elementu Force 51: Force expression.

Tak zdefiniowany model jest prawie gotowy do zasymulowania. Przedostatnią czynnością, jaką należy wykonać jest zmiana czasu analizy i częstotliwości próbkowania na poziomie Solver Settings. Symulacja rozpoczyna się po uruchomieniu komendy Offline integration with measurements. Warto dodać, że przeglądu rezultatów symulacji sprzężonej można dokonać zarówno z poziomu XFlow, jak i Simpack. Rysunek 11 przedstawia przykładowe wyniki dla jednej z klatek animacji.

Wyniki Sprzezone Simpack
Wyniki Sprzezone Xflow

 Rys. 11 Wyniki ze sprzężonej symulacji XFlow-Simpack

Podsumowanie
Przedstawiony przykład pokazuje jak w prosty sposób połączyć ze sobą pakiety XFlow i Simpack. W ten sposób istnieje możliwość połączenia ze sobą pakietów numerycznych zaprojektowanych do obliczeń w różnych dziedzinach fizyki. Oczywiście, w oparciu o przedstawioną procedurę można tworzyć bardziej skomplikowane modele. W rzeczywistości ograniczają nas tylko wyobraźnia, liczba posiadanych licencji i rodzaj wykorzystywanego sprzętu. Jednak nic nie stoi na przeszkodzie, by zasymulować pracę turbiny wiatrowej z uwzględnieniem różnych warunków zewnętrznych, czy też płynięcie łódką po wzburzonych falach.

Sławomir Polański

Simulation Engineer w Technia UK
Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie w przeglądarce obsługi JavaScript.

Literatura:
[1] Webinar about the XFlow https://www.youtube.com/watch?v=bTb-8ogwn6c
[2] Xflow Tutorial Guide

 

artykuł pochodzi z wydania 7/8 (142/143) lipiec/sierpień 2019