» Blog » Praca z linii komend w ANSYS Fluent

Praca z linii komend w ANSYS Fluent

Linia komend to jeden z tych elementów Fluenta, który wywołuje u niedoświadczonych (ale nie tylko) użytkowników niepokój. Wydaje się, że są dwa główne powody takiego stanu rzeczy.

Po pierwsze, już sama koncepcja pracy bez korzystania z interfejsu graficznego przywołuje flashbacki z początków ery komputerów osobistych, gdzie żmudnie wprowadzano komendy tekstowo, aby wykonać najprostsze zadania. Cóż, faktycznie sterowanie Fluentem przypomina wtedy pracę na nieśmiertelnym jak sylwester z Marylą Rodowicz systemie MS-DOS. Paradoksalnie jednak używanie trybu tekstowego może nie tylko rozszerzyć funkcjonalność Fluenta, ale nawet przyspieszyć jego pracę.

Po drugie zaś, dokumentacja w tym przypadku jest, krótko mówiąc, lakoniczna. Nie mając wcześniejszego wsparcia trudno jest rozpocząć przygodę w oparciu o kilka zwięzłych informacji. Artykuł ten, ma więc na celu być takim przewodnikiem wprowadzającym użytkownika do pracy tekstowej.

Zanim zaczniemy, odpowiedzmy sobie na następujące pytanie: „Dlaczego właściwie chciałbym pracować bez interfejsu graficznego?”. Pytanie to postawione osobie, która chce nas pozbawić wygody klikania myszką, jest jak najbardziej na miejscu. I tu odgraniczyć należy grubą kreską sytuacje, kiedy linia komend faktycznie nam pomoże, a kiedy będzie niepotrzebną komplikacją zadania.

Możemy wyróżnić dwie główne sytuacje:

  1. Obliczenia wykonywane są na komputerze na którym nie ma możliwości wyświetlania graficznego (np. serwery obliczeniowe);
  2. Automatyzacja i kolejkowanie.

Brak karty graficznej w komputerze nie jest tak rzadki jak mogłoby się wydawać. Duża część rozwiązań Cloudowych nie posiada interfejsu graficznego. Najczęściej użytkownik przygotowuje pliki wsadowe (model i skrypt), i wysyła je na klaster obliczeniowy, gdzie dalej są procesowane. Post-processing jest wtedy wykonywany lokalnie na naszym komputerze, lub na oddzielnej (najczęściej dodatkowo płatnej) maszynie z zainstalowanym interfejsem graficznym.

Z kolei druga sytuacja jest chyba jeszcze bardziej powszechna. Trudną do uzasadnienia naszemu szefowi byłaby sytuacja, gdzie uruchamiamy obliczenia o godzinie 9 rano i czekamy 4 godziny na wyniki symulacji, jednocześnie umilając sobie czas serialami na Netflixie. Można oczywiście rozważyć zakup drugiego stanowiska lub licencji Pre-Post, jednak życie uczy, że bardzo często rozmowa o kupnie drugiej łopaty, gdy pracownik ma już jedną jest z góry skazana na porażkę.

Z rozmów z naszymi klientami wiemy, że najczęstszą strategią w optymalizowaniu użycia licencji jest przygotowywanie modeli w ciągu dnia i rozwiązywanie zadania w nocy. Dobrze jest wtedy mieć narzędzie, które zadba o to, aby zadania wykonywane były automatycznie jedno po drugim.

Choć należy tu również zaznaczyć, że same skrypty można wywoływać również z GUI (skrót od: Graphical User Interface). Korzystanie z Fluenta z linii komend (bez GUI) i wywoływanie poleceń z konsoli to zatem nieco inne tematy, to jednak chciałbym w ramach tego artykułu poruszyć jeden i drugi aspekt.

Jeżeli nie mamy do czynienia z którąś z tych sytuacji, linia komend najprawdopodobniej nie jest nam potrzebna.

Praca z konsolą w ANSYS FLUENT

Na początek mały zawód dla osób, które sądzą, że konsola Fluenta odpali GTAV. Niestety, gier z PlayStation czy XBOXa nie uruchomimy, ale legendy miejskie głoszą że „it runs DOOM”.

A teraz poważnie. Jeśli mamy pracować bez użycia interfejsu, konieczne jest swobodne poruszanie się po konsoli Fluenta. Wystarczy znać kilka prostych jak fabuła Klanu zasad i już można korzystać z dobrodziejstw TUI (Text User Interface).

Przede wszystkim, nie jest konieczne aby zapamiętywać konkretne komendy. Są one poszeregowane w katalogach niczym pliki, które możemy przeglądać zanim cokolwiek wywołamy. Oczywiście mając w pamięci najczęściej używane przez nas komendy nie ma przeszkód, aby wywołać je bezpośrednio, jednak nie jest to niezbędne. Spróbujmy zatem, dla przykładu, znaleźć narzędzie sprawdzające jakość naszej siatki.

Aby wejść do trybu tekstowego należy kliknąć lewym przyciskiem myszy na pole konsoli i przycisnąć Enter.

1 wejście do trybu tekstowego

W konsoli pojawi się lista dostępnych katalogów oraz pusta linia do wprowadzania instrukcji. Aby wejść do danego katalogu trzeba oczywiście wpisać jego nazwę i potwierdzić klawiszem Enter. Szukamy narzędzia do sprawdzania siatki, zakładam więc że znajduje się ono w katalogu mesh.

2 katalog mesh w Fluent

Aktualnie znajdujemy się na poziomie katalogu mesh, w ten sam sposób gdybyśmy w eksploratorze Windows utworzyli klasyczny folder o tej nazwie i weszli do środka. Różnica polega na tym, że w Windowsie automatycznie widzimy (jak na dobrze działające okno przystało) zawartość katalogu. Tu natomiast, chcąc zobaczyć co znajduje się na danym poziomie, należy ponownie nacisnąć Enter.

2 katalog mesh w Fluent z poziomu Windowsa

Otrzymujemy w ten sposób listę dostępnych elementów. Struktura katalogów komend jest wielopoziomowa, więc wewnątrz mesh znajdują się kolejne pod-foldery. Gdy wyświetlana jest lista katalogów i komend, te pierwsze zakończone są znakiem /. Na liście zauważyć możemy opcję quality. Wpisujemy ją zatem do linii i potwierdzamy klawiszem Enter.

4 katalog mesh opcja quality

Po wykonaniu komendy program wraca do ostatniego miejsca w strukturze. Chcąc wyjść z danego katalogu wpisujemy do linii literę q (od quit) i zatwierdzamy Enterem.

5 wyjście z katalogu komend

Jeżeli znamy brzmienie komendy która chcemy wywołać możemy wpisać pełne jej brzmienie ( z całą ścieżką) do linii:

6 pełne brzmienie komend

Znakiem wskazującym kolejny poziom może być / lub spacja. Dodatkowo, nie jest konieczne wpisywanie pełnych nazw katalogów lub komend. Wystarczy tyle znaków, aby program mógł rozgraniczyć nazwę od innych, znajdujących się w danym katalogu.

7 wpisywanie komend w ANSYS Fluent

Czasami po wywołaniu komendy należy podać dodatkowe argumenty. Na przykład komenda do uruchamiania równania energii define/models/Energy prosi o następujące dane:

8 komenda do uruchomienia równania energii

Każda z odpowiedzi musi zostać potwierdzona Enterem. Fluent podpowiada nam, jaka jest domyślna (lub wcześniej ustawiona) odpowiedź na dany argument w kwadratowych nawiasach. Jeśli chcemy pozostawić domyślne ustawienie musimy jedynie potwierdzić Enterem. Widać również w tym konkretnym przypadku, o ile więcej ustawień znajduje się poukrywanych w konsoli, które nie są dostępne przez GUI.

Jak zatem wprowadzić taką komendę „na raz”? Argumenty potrzebne do danej funkcji wprowadzamy po spacji:

Niestety, aby polecenie zadziałało trzeba odpowiedzieć na wszystkie „pytania”, które zadaje nam dana funkcja. Należy zatem dobrze znać komendę zanim użyje się jej w ten sposób. Możliwe jest również użycie znaku przecinka w sytuacji, gdy chcemy wybrać wartość/odpowiedź domyślną:

10 wybieranie wartości lub odpowiedzi domyślnej

Czarny Fluent

Skoro wiemy już jak używać konsoli Fluenta, spróbujmy uruchomić go w trybie tekstowym. W systemach Windows Fluenta możemy włączyć na trzy sposoby: z poziomu Workbencha, z menu Start oraz z wiersza poleceń systemu. Skupimy się oczywiście na trzeciej opcji.

Po uruchomieniu linii komend Windowsa stajemy przed trudnym niczym znalezienie auta bez skręconego licznika pytaniem: co wpisać, aby włączyć Fluenta? Najbardziej łopatologiczne podejście to oczywiście wpisanie pełnej ścieżki Fluenta (C:\Program Files\ANSYS Inc\v201\fluent\ntbin\win64\fluent.exe to domyślna ścieżka dla wersji 2020R1). Dużo wygodniej jest jednak korzystać ze skrótu Fluent. Żeby jednak ten skrót zadziałał należy najsamprzód wywołać plik setenv.exe który znajduje się w tym samym katalogu, co Fluent.exe (wymagane uprawnienia administratora na koncie). Aplikacja ustawi zmienne środowiskowe, dzięki którym, po kolejnym uruchomieniu wiersza poleceń, będziemy w stanie przywołać Fluenta po jego imieniu:

11 uruchomienie ANSYS Fluent w trybie tekstowym

Dalej jest już tak samo, jak gdybyśmy uruchomili Fluenta z menu Start. Bez dodatkowych argumentów, Fluent uruchomi się według ustawień w oknie startowym (liczba rdzeni, 2D/3D, single/double precision), w klasycznym trybie graficznym. Aby uruchomić go w trybie tekstowym, do magicznego zaklęcia dodać należy argument -g oraz określić parametry początkowe analizy. Nie da się bowiem uruchomić Fluenta w trybie tekstowym i jednocześnie graficznie opisywać ustawień solwera (Launcher). I tak, chcąc na przykład uruchomić Fluenta w trybie 2d napiszemy fluent -g 2d.

12 uruchomienie ANSYS Fluent w trybie 2d w trybie tekstowym

To co wypisał nam wiersz poleceń jest identyczne z tym co pokazuje konsola przy uruchamianiu Fluenta w trybie graficznym. W tej chwili cała kontrola nad Fluetnem odbywa się dokładnie tak jak w tekstowym interfejsie.

13 tekstowy interfejs przy uruchomieniu Fluenta

Z tego poziomu, możliwe jest wczytanie case’a lub siatki, ustawienie symulacji czy włączenie obliczeń. Tak naprawdę możliwe jest wszystko to, co w normalnym trybie działania. Jedyna znacząca różnica to taka, że nie wyświetlane są wykresy reszt czy animacje. Co gorsza, animacje nie będą nawet generowane do pliku, gdyż argument -g obdziera Fluenta nie tylko z samego GUI, ale w ogóle z całego modułu graficznego (w tym narzędzi do generowania grafik).

Jest jednak na to prosty sposób. Wystarczy uruchomić Fluenta z argumentami -gu -driver null. Pierwszy z nich, -gu wyłącza jedynie graficzny interfejs użytkownika, pozostawiając przy życiu moduł do wykreślania grafik. Z kolei argument -driver null wyłącza z działania sterownik graficzny, który odpowiada za wyświetlenie wygenerowanej przez Fluenta grafiki na monitorze użytkownika. Stawiamy zatem Fluenta w dość niezręcznej sytuacji, gdzie każemy mu generować grafiki, ale nie pozwalamy jej wyświetlić. Oczywiście ma to sens tylko wtedy, kiedy chcemy podczas obliczeń zapisywać do pliku jakieś informacje graficzne – najczęściej animacje.

Argumentów możliwych do wykorzystania jest oczywiście więcej. Możemy je z łatwością wyświetlić wpisując do systemowej linii komend Fluent -help.

14 Fluent help argumenty możliwe do wykorzystania

Dż jak Journal

Skoro wiemy już jak okiełznać potęgę Fluenta za pomocą komend, czas ukierunkować ją na konkretne zadania. Znając komendy, które chcemy wywołać we Fluencie możemy skomponować skrypt, który automatycznie wykona zadaną przez nas procedurę. Wystarczy wpisać (lub skopiować z konsoli) komendy do pliku tekstowego, oddzielając pojedyncze kroki nową linią.

Na przykład, poniższy skrypt wczyta plik case, zainicjalizuje zadanie, wykona 200 iteracji, zapisze wynik i zamknie Fluenta.

14 przykładowy skrypt we Fluencie

Skrypty te, nazywane są Journalami. Jak widać ich konstrukcja jest bardzo prosta i potrzebny nam jest jedynie notatnik i ewentualnie uruchomiony Fluent, z którego czerpać będziemy komendy. Tak skomponowany Journal uruchamiamy z menu File -> Read -> Journal.

15 Journal

Możliwe jest również uruchomienie skryptu z poziomu linii komend. Jest to wyjątkowo przydatne, gdy uruchamiamy obliczenia na serwerze. Sama komenda Fluent uruchamia program, natomiast to zadaniem journala będzie przeprowadzenie obliczeń. Aby uruchomić skrypt w tzw. batchu należy użyć argumentu -i i dopisać nazwę pliku ze skryptem. Na przykład:

15 uruchamianie skryptu Journala w batchu

Rozszerzenie .jou nie ma tu większego znaczenia. Najważniejsze, aby plik był edytowalny notatnikiem. Brak pełnej bezwzględnej ścieżki do skryptu oznacza że plik znajduje się w tym samym katalogu, z którego wykonywane jest polecenie fluent.

Command&Conquer

Jak widać, nie taki diabeł straszny jak go malują. W artykule zaprezentowaliśmy właściwie większość podstawowych zastosowań linii komend i skryptów. Pokazane techniki pozwolą Czytelnikowi z powodzeniem sterować obliczeniami na klastrze, modyfikować parametry zadania podczas trwania symulacji, czy kolejkować zadania lokalnie na swoim komputerze. Na koniec warto jeszcze wspomnieć o skryptach pisanych innym językiem – Scheme. Oferują one nieco więcej niż Journale (chociażby możliwość wprowadzenie funkcji IF czy pętli), jednak jest to zupełnie odrębna działka i temat na inny artykuł 🙂

Autor: Maciej Kryś, MESco Sp. z o.o.