__________________________________________________________________________________________
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
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
4.
Opis problemu
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/(m
2
K) a na dolnej 350W/(m
2
K)
•
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
87.5
600
g
s
s
α =
−
+
W/(m
2
K)
gdzie:
2
2
/ 0.02
s
x
y
=
+
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
70.8333
600
d
s
s
α
=
−
+
W/(m
2
K)
__________________________________________________________________________________________
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:
1250 15
T
s
=
−
K
•
Zmiana właściwości materiałowych
Przy użyciu pliku UDF i makra DEFINE_PROPERTY zmienić przewodność cieplną tytanu:
3
( )
7.4 1.1
10
k T
T
−
=
+
⋅ ⋅
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ą
}