background image

 
__________________________________________________________________________________________ 
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 

background image

 
__________________________________________________________________________________________ 
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.  

background image

 
__________________________________________________________________________________________ 
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) 

background image

 
__________________________________________________________________________________________ 
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

=

 

 

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ą