Modelowanie łopatki turbiny – modyfikacja warunków
brzegowych oraz własności materiałowych przez
zastosowanie user-defined functions (UDF)
1. Informacje ogólne
User-define functions (UDF) to tworzone przez użytkownika programy, które mogą być
dynamicznie dołączone do FLUENTa. UDF są pisane w języku C lub C++. UDF musi zawierać makra
DEFINE oraz inne funkcje zdefiniowane w programie FLUENT, które pozwalają na dostęp do danych
generowanych przez ten program.
UDF mogą być dołączone w postaci funkcji interpretowanych oraz kompilowanych. Funkcje
interpretowane są dołączone i kompilowane w trakcie wykonywania obliczeń natomiast funkcje kompilowane są to gotowe programy skompilowane i dołączone do FLUENTa w trakcie
wykonywania obliczeń.
UDF stosuje się w celu dopasowania warunków brzegowych, modelowania zmiennych
własności materiałowych, dodania nowych członów źródłowych w równaniach transportu, w celu inicjalizacji obliczeń. UDF pozwalają na rozwijanie modeli dostępnych w pakiecie FLUENT, jak również pozwalają na zwiększenie możliwości tzw. post-processing’u.
2. Stosowanie UDF
UDF może mieć dostęp do wielkości obliczeniowych w poszczególnych węzłach w obszarze i
w węzłach na brzegach tylko przez predefiniowane makra oraz funkcje. Komórki w obszarze obliczeniowym oraz węzły na brzegu posegregowane są w grupy. UDF wymaga określenia grupy, w
której będą wprowadzane zmiany. Odbywa się to przez wskaźnik thread zmiennej typu Thread (zdefiniowane w FLUENCIE). Wskaźnik ten wskazuje grupę, która będzie modyfikowana przez UDF.
Rysunek 1 Struktura przechowywania danych w FLUENCIE
__________________________________________________________________________________________
Laboratorium Metody Numeryczne w Wymianie Ciepła, Wydział Mechaniczny Energetyki i Lotnictwa, PW
Mirosław Seredyński, msered@itc.pw.edu.pl
Piotr Łapka, plapka@itc.pw.edu.pl
Dodatkowe zmienne wprowadzone w FLUENCIE związane z danymi przechowywanymi na siatce (rys. 1):
Cell_t – typ danych reprezentujący komórkę w grupie thread
Face_t – typ danych reprezentujący węzły na brzegu w grupie thread
Thread – typ reprezentujący grupę komórek wewnątrz obszaru bądź grupę węzłów przypisanych do określonego fragmentu brzegu
Domain – typ reprezentujący cała siatkę
Node – typ reprezentujący węzły
Poniżej przedstawiono wybrane makra predefiniowane w FLUENCIE:
DEFINE_PROFILE(nazwa_UDF, thread, index) – makro pozwalające na przypisanie określonych
warunków brzegowych do wszystkich węzłów brzegu wskazanego przez zmienną thread. Zmienna nazwa_UDF to nazwa UDFa nadana przez użytkownika, identyfikująca warunek brzegowy. Zmienna thead jest automatycznie inicjalizowana w momencie przypisania UDF do określonego brzegu w FLUENCIE. Zmienna index jest generowana automatycznie i oznacza wielkość, która będzie modyfikowana (temperatura, ciśnienie itd.)
DEFINE_PROPERTY(nazwa_UDF, cell, thread) – makro, które modyfikuje wartość zmiennej materiałowej w określonej komórce cell w grupie thread.
F_CENTROID(x,f,thread) – makro przypisujące zmiennej real x[ND_ND] gdzie ND_ND liczba wymiarów współrzędnej środka komórki f typu Face_t w grupie thread wskazującej brzeg.
F_PROFILE(f, thread, index) – makro modyfikujące wielkość określoną przez index w komórce f typu face_t w grupie thread wskazującej brzeg.
C_T(cell, thread) – makro odczytujące wartość temperatury w komórce cell typu Cell_t z grupy thread wskazującej wnętrze obszaru.
begin_f_loop(f, thread)
{
}
end_f_loop(f, f_thread) – makro wykonujące pętle po wszystkich komórkach f typu Face_t w grupie thread wskazującej brzeg.
Do każdego pliku UDF musi być dołączony plik udf.h. Plik ten zawiera definicje funkcji oraz makr przedefiniowanych w FLUENCIE.
3. Uruchomienie UDF jako funkcji interpretowanych
Aby dołączyć UDF należy wejść do Define −> User-Defined −> Functions −> Interpreted...
Następnie wskazać kod źródłowy i kliknąć Compile (plik z kodem nie może znajdować się w katalogu z spacją w nazwie!). Zaznaczyć opcję Display Assembly Listing. Jeżeli będą błędy w kodzie to w oknie dialogowym pojawi się komunikat o błędzie.
Po skompilowaniu UDFa zdefiniowane przez użytkownika funkcje (warunki brzegowe,
własności materiałowe itd.) są widoczne po wybraniu odpowiednich warunków brzegowych,
własności materiałowych itd. w towarzyszących im listach rozwijalnych.
__________________________________________________________________________________________
Laboratorium Metody Numeryczne w Wymianie Ciepła, Wydział Mechaniczny Energetyki i Lotnictwa, PW
Mirosław Seredyński, msered@itc.pw.edu.pl
Piotr Łapka, plapka@itc.pw.edu.pl
GAMBIT
• Należy stworzyć model łopatki wykorzystując podane punkty – plik vane.dat (zawiera
współrzędne x i y punktów definiujących profil). Nie należy wprowadzać punktów
ręcznie, trzeba odpowiednio zmodyfikować zbiór punktów a następnie wczytać do
programu: File −> Import->Vertex Data. Modyfikacja ma polegać na dodaniu do każdego punktu współrzędnej z. Punkt spiętrzenia ma współrzędne: (0.0;0.0),
natomiast punkt spływu: (4.6828;-1.0423e+01).
• Stworzyć kanały chłodzące łopatkę – promień 0.4, położenie (0.75;-0.25), (1.25;0.75),
(2.25;-2.0), promień 0.25, położenie (2.9;-4.0), promień 0.20, położenie (3.4;-5.5).
• Zdefiniować funkcję służącą do zagęszczenia siatki w okolicach kanałów chłodzących
i krawędzi spływu wykorzystując Size Function (Fixed, źródło - krawędzie okręgów
kanałów chłodzących, Start size 0.05, Growth rate 1.1, Size limit 0.5 oraz Fixed,
źródło – punkt spływu, Start size 0.05, Growth rate 1.02, Size limit 0.5).
• Utworzyć siatkę trójkątna.
• Warunki brzegowe: WALL – dwie krawędzie górna i dolna (od punktu spiętrzenia do
krawędzi spływu), kanały chłodzące – razem 7 warunków WALL, wnętrze to SOLID.
FLUENT
Główne założenia
• Przeskalować przyjmując skale w kierunki x i y równą 0.02.
• Segregated, stan ustalony, włączyć równanie energii, materiał to tytan, temperatura gazu
opływającego łopatkę 1250K. Temperatura czynnika w kanałach chłodzących: trzy
pierwsze 350K, kolejne 300K. Współczynnik przejmowania ciepła na górnej krawędzi
przyjąć stały równy 400W/(m2K) a na dolnej 350W/(m2K)
• Rozwiązywane będzie tylko równanie energii.
1. Obliczenia dla zmiennego współczynnika przejmowania ciepła
Przy użyciu pliku UDF i makra DEFINE_PROFILE zadać zmienny współczynnik przejmowania
ciepła na powierzchniach łopatki:
• górna powierzchnia - współczynnik alfa jest opisany wzorem:
2
α = 6.25 s −87.5 s + 600 W/(m2K)
g
gdzie:
2
2
s =
x + y / 0.02
2
2
x + y - odległość punktu o współrzędnych (x,y) leżącego na profilu od początku układu współrzędnych (od punktu spiętrzenia)
• dolna powierzchnia
2
α = 4.1666 s − 70.8333 s + 600 W/(m2K)
d
__________________________________________________________________________________________
Laboratorium Metody Numeryczne w Wymianie Ciepła, Wydział Mechaniczny Energetyki i Lotnictwa, PW
Mirosław Seredyński, msered@itc.pw.edu.pl
Piotr Łapka, plapka@itc.pw.edu.pl
2. Obliczenia dla zmiennego współczynnika oraz zmiennej temperatury
gazu otaczającego
Przy użyciu pliku UDF i makra DEFINE_PROFILE zmienić temperaturę gazu opływającego:
T = 1250 −15 s K
• Zmiana właściwości materiałowych
Przy użyciu pliku UDF i makra DEFINE_PROPERTY zmienić przewodność cieplną tytanu:
3
k ( T )
7.4 1.1 T 10−
=
+
⋅ ⋅
W/(mK)
UDF TEMPLATE’s
#include "udf.h"
DEFINE_PROFILE (nazwa, thread, index)
{
real x[ND_ND];
real s;
face_t f;
begin_f_loop(f, thread)
{
F_CENTROID(x,f,thread);
//zmienić wartość na brzegu wykorzystując makro F_PROFILE(f, thread, index) = …..
}
end_f_loop(f, thread)
}
DEFINE_PROPERTY(nazwa, cell, thread)
{
// funkcja C_T(cell, thread) zwraca wartość temperatury w komórce cell
return ; //podać wartość zwracaną
}
__________________________________________________________________________________________
Laboratorium Metody Numeryczne w Wymianie Ciepła, Wydział Mechaniczny Energetyki i Lotnictwa, PW
Mirosław Seredyński, msered@itc.pw.edu.pl
Piotr Łapka, plapka@itc.pw.edu.pl