Pierwsze kroki z programem FlexPDE Numeryczne Metody Obliczeniowe
Wprowadzenie FlexPDE, jak sam producent (PDE Solutions Inc.) głosi, jest to elastyczny program obliczeniowy do rozwiązywania równań pochodnych cząstkowych (PDE Partial Differential Equations). Jest to proste narzędzie pozwalające na numeryczne obliczanie równań różniczkowych, opisujących najróżniejsze zjawiska fizyczne.
Program posiada wbudowany edytor, za pomocą którego możliwe jest konstruowanie skryptu (modelu) dla dowolnych zagadnień z dziedziny statyki, mechaniki płynów, termodynamiki, wytrzymałości materiałów, chemii, elektrotechniki i wielu, wielu innych... Skrypt po napisaniu może być uruchomiony, następnie mogą zostać naniesione poprawki, po czym można go uruchomić ponownie i tak aż do chwili, gdy uznamy, że ów zaspokaja nasze potrzeby. Możliwe jest zapisanie skryptu do późniejszego użytku lub jako skryptu wyjściowego do innych zagadnień.
Każdy skrypt, niezależnie od problematyki do jakiej nawiązuje, winien posiadać zdefiniowane następujące elementy: - Zmienne, stałe i równania, - Obszary i ich właściwości, - Warunki brzegowe, - Dane wyjściowe w postaci wykresów,
Interfejs programu Architektura programu jest prosta i w znacznym stopniu intuicyjna, Sam program posiada niewiele poleceń i opcji gdyż większość właściwości modelu definiowana jest przez użytkownika poprzez skrypt stąd niezbędna jest znajomość języka, w którym ów skrypt się sporządza.
Wskazówki pomocne w pracy z programem Najprostszym sposobem rozpoczęcia pracy nad danym zagadnieniem jest skopiowanie skryptu podobnego, już rozwiązanego zagadnienia i jego reedycja. Najlepiej rozpocząć pracę od budowy prostego modelu, najlepiej takiego, którego wynik jest znany - pozwoli to na poprawne ujecie problemu. Na początek wystarczy użyć najprostszych właściwości materiałowych - na nieliniowo zmieniające się współczynniki przyjdzie czas, gdy model będzie działał poprawnie. Pomocne bywa umieszczanie w skrypcie notatek w formie komentarzy wszędzie, gdzie jest to możliwe.
Wygodnie jest najpierw rozrysować sobie na papierze kształt obszaru, w którym zachodzić będzie modelowane zjawisko, zaś definiując obszary w skrypcie zacząć należy od największego, obejmującego zasięgiem pozostałe. używanie opcji monitorowania przebiegu rozwiązywania (MONITORS) pozwala zatrzymać program, jeśli zauważy się błąd - zaoszczędza to czas. Niezastąpione bywa częste zapisywanie pracy, nawet pomimo tego, że za każdym razem po wciśnięciu "Domain Review" oraz "Run Script program robi to automatycznie.
Dodatkowo, należy pamiętać o tym że: Dla programu nieistotna jest wielkość liter, dlatego F zinterpretuje tak samo jak f Separatorem dziesiętnym jest kropka! Pochodna, taka jak np: du/dt, jest zapisywana w postaci dt(u). Komentarze mogą być umieszczane w dowolnym miejscu, przy czym tekst ujęty w klamry {} w całości uważany jest za komentarz, zaś wiersz poprzedzony wykrzyknikiem! będzie ignorowany w całości.
Zmienne i równania Sekcje VARIABLES i EQUATIONS zawierają informacje o zmiennych i równaniach kluczowych dla modelowanego zjawiska i są ze sobą ściśle powiązane. Każdej jednej zmiennej musi odpowiadać jedno równanie. W prostych zagadnieniach, występuje za zwyczaj tylko jedna zmienna jak napięcie lub temperatura wówczas wystarczy prosty zapis: VARIABLES T EQUATIONS Div(grad(T))=0...
W bardziej złożonych przypadkach, gdy występować będzie więcej zmiennych i równań program będzie wymagał określenia powiązań między konkretnymi zmiennymi i równaniami, ponieważ niektóre szczegóły konstrukcji modelu mogą zależeć od tych powiązań. W takim wypadku każde z równań musi posiadać swoistą etykietę, taką jak w tym przypadku: VARIABLES A,B EQUATIONS A: Div(grad(A)) = 0 B: Div(grad(B)) = 0...
Tworzenie obszaru roboczego Obszar zagadnienia dwu-wymiarowego opisywany jest w części skryptu nazwanej BOUNDARIES (warunki brzegowe) i składa się z tzw. regionów (REGION). Pojedynczy region może mieć dowolny kształt, zaś w jego obrębie znajdować się mogą również inne regiony, z których każdy może posiadać sprecyzowane tylko dla siebie właściwości materiałowe. Każdy nowy region poprzedzony być musi poleceniem REGION, po którym znajdować się może numer danego regionu, lub jego nazwa (ujęta w apostrofy: ''),
Każdy następny zdefiniowany region pokrywający te zdefiniowane wcześniej przejmuje dany obszar jako swój, pozostawiając w tym wcześniejszym ubytek, Pierwszy zdefiniowany region powinien zawierać cały obszar roboczy, czyli wszystkie zdefiniowane później regiony, Kształt regionu tworzony jest jako ślad punktu przemieszczającego się od jednego do drugiego wierzchołka definiowanego przez użytkownika, przy czym ów ślad może być linią, polilinią albo łukiem. "Rysowanie" każdego regionu rozpoczyna się poleceniem "START" i podaniem w nawiasie współrzędnych pierwszego punktu.
Każdy następny ślad kontynuowany jest z wierzchołka w którym skończył poprzedni. Aby zamknąć dany region, nie wpisując ponownie współrzędnych punktu początkowego wystarczy użyć polecenia "CLOSE" (np: "LINE TO CLOSE"). Przykładowo zdefiniowany region o kształcie prostokąta, będzie wyglądał następująco: START (x1,y1) LINE TO (x2,y1) LINE TO (x2,y2) LINE TO (x1,y2) LINE TO CLOSE Lub po prostu: START (x1,y1) LINE TO (x2,y1) TO (x2,y2) TO (x1,y2) TO CLOSE
Kreślenie łuków może odbywać się na kilka sposobów. Jeden z nich polega na podaniu współrzędnych środka i kąta na jakim łuk jest rozpięty - przykład: START (r,0) ARC(CENTER=0,0) ANGLE=360 Inny sposób to podanie współrzędnych początku, środka i końca łuku. Na przykład łuk o rozpiętości 90 stopni można opisać w następujący sposób: START (r,0) ARC(CENTER=0,0) TO (0,r)
W podobny sposób można kreślić także łuk eliptyczny, który powstanie, gdy odległość od środka do punktu końcowego jest inna niż do od środka do punktu początkowego. Osie tak powstałej elipsy będą rozciągnięte pomiędzy współrzędnymi pionowymi i poziomymi, a mogą być one obrócone za pomocą polecenia "ROTATE=" po którym wpisujemy kąt obrotu (w stopniach). Aby obejrzeć wykreślony obszar należy użyć przycisku "Domain Review".
Przykładowe zagadnienie I - Geometria: Niech za przykład posłuży proste zagadnienie z zakresu wymiany ciepła. Obszar jaki zamodelujemy będzie to sztaba jakiegoś materiału o przekroju kwadratowym z okrągłym rdzeniem wykonanym z innego materiału. Taki obszar zdefiniujemy następująco: BOUNDARIES REGION 1 'SZTABA' START (-1,-1) LINE TO (1,-1) TO (1,1) TO (-1,1) TO CLOSE REGION 2 'RDZEN' START (0.5,0) ARC(CENTER=0,0) ANGLE=360 TO CLOSE
II Ustalenie zmiennej i równania: Jako, że zajmujemy się wymianą ciepła, zmienną jaka będziemy rozpatrywać będzie oczywiście temperatura: T; Równanie różniczkowe opisujące rozkład temperatury w układzie zamkniętym, w skrypcie powinno to wyglądać następująco: VARIABLES T EQUATIONS Div(-k*grad(T))=0
III Definiowanie materiału: Wiele problemów rozwiązywanych za pomocą narzędzi takich jak FlexPDE, polega jedynie na symulacji zjawisk fizycznych mających miejsce w ośrodkach o różnych właściwościach materiałowych. Skoro zajmujemy się wymianą ciepła, podstawową właściwością naszego materiału będzie współczynnik przewodnictwa cieplnego: DEFINITIONS k {W/(K*m^2)} REGION 1 SZTABA k=1 START (-1,1) REGION 2 RDZEŃ k=0.1 START (0.5,0)
IV Warunki brzegowe: Każde równanie różniczkowe do rozwiązania wymaga podania warunków brzegowych. W przypadku progra-mów komputerowych polega to na określeniu zjawisk mających miejsce na granicach obszaru roboczego. W kontekście wymiany ciepła, zjawiska te mogą mieć charakter: stałej zmiennej (VALUE) np. temperatury, strumienia ciepła (NATURAL) - w tym również chłodzenie konwekcyjne lub brak jakiegokolwiek przepływu, W programie FlexPDE definiuje się je następująco: BOUNDARIES REGION 1 SZTABA k=1 START (-1,1) VALUE(T)=10 LINE TO (-1,-1) NATURAL(T)=-k*T^4 LINE TO (1,-1)
Definiując warunki brzegowe należy pamiętać, że zostaną one przypisane wszystkim odcinkom następującym po nich, aż do następnego zdefiniowanego warunku brzegowego, Należy przy tym także, po każdym wprowadzonym warunku brzegowym, użyć pełnego polecenia określającego charakter linii na której ten warunek panuje ( LINE TO zamiast samego TO ),
V Parametry siatki: Program za zwyczaj sam dobiera sobie gęstość siatki elementów skończonych, dla której przeprowadza obliczenia, jednak użytkownik może mieć na to wpływ jeżeli zechce. Podstawowym poleceniem służącym do modyfikowania gęstości siatki jest polecenie MESH_SPACING: REGION 2 RDZEŃ' START(0.5,0) MESH_SPACING = 0.05 ARC(CENTER=0,0) ANGLE=360 Modyfikacja siatki jednego obszaru wymusza także modyfikacje obszarów pozostałych. Etap generowania siatki następuje dopiero po uruchomieniu skryptu.
VI Określanie charakteru wyników obliczeń: Wyniki obliczeń prezentowane są w postaci dowolnie zdefiniowanych kolorowych wykresów, spośród następujących rodzajów: - CONTOUR tzw. wykres poziomicowy, - SURFACE trójwymiarowa powierzchnia wartości zmiennej, - VECTOR pole wektorów zmian zmiennej - ELEVATION wykres liniowy, - SUMMARY raport tekstowy; - GRID przedstawia postać siatki (także po odkształceniu); PLOTS CONTOUR(T) VECTOR(-k*grad(T)) ELEVATION(T) FROM (0,-1) TO (0,1)
Kompletny skrypt
Dziękuję za uwagę!!! mgr inż. Konrad Nowak