- ANSYS Fluent 二次開發指南
- 胡坤編著
- 1027字
- 2022-01-13 14:56:43
1.7 UDF使用流程
這里以一個簡單的初始化案例來描述UDF的源代碼編寫、編譯及加載過程。通過此案例可以熟悉UDF的整個使用流程。
1.7.1 Fluent中的Patch
Fluent中提供了全局初始化以及局部Patch功能。對于整體區域的全局初始化可以采用starndard及hybrid方法進行初始化,指定各種物理量的初始分布。而對于計算域中的局部區域初始化,則可以通過Patch功能來實現。
在使用Patch方法時,首先需要對要進行Patch的區域進行標記。鼠標右鍵選擇樹性節點Solution > Cell Registers,點擊彈出菜單項New→Region...可彈出區域定義對話框(圖1-4)。

圖1-4 創建區域
可以在彈出的對話框中設置幾何條件來標記(Mark)區域,如圖1-5所示。

圖1-5 區域定義對話框
此對話框中可定義的形狀類型在2D模型中只有三種:Quad、Circle或Cylinder。在3D模型中對應的是Hex、Sphere以及Cylinder。對于更復雜的形狀則無能為力,此時可以借助UDF來解決問題。
1.7.2 案例描述
如圖1-6所示的矩形區域為計算區域,其初始溫度為300K,計算模型尺寸如圖所示。

圖1-6 幾何模型
圖中橢圓部分為要進行初始化處理的區域,其初始溫度為500K。生成計算網格如圖1-7所示。
注 意
在創建幾何模型時,確保幾何左下角為坐標原點,否則需要更改UDF程序中的橢圓中心坐標。

圖1-7 計算網格
1.7.3 編寫UDF源文件
對于這種橢圓形區域的初始化,只能采用UDF來實現。利用DEFINE_INIT宏來實現這種區域的標記工作。
本案例中橢圓方程為:

因此可在文本編輯器中編寫UDF代碼如下:
#include ”udf.h” DEFINE_INIT(domainInit,d) { cell_t c; Thread *t; real xc[ND_ND];  real x;   real y; thread_loop_c(t,d) { begin_c_loop_all(c,t) { C_CENTROID(xc,c,t); x = xc[0]; y = xc[1]; if(pow((x-0.05),2)/(0.03*0.03)+ pow(y-0.03,2)/pow(0.015,2)<1) { C_T(c,t) = 500;   } else { C_T(c,t)=300; } } end_c_loop_all(c,t) } }
1.7.4 解釋UDF
利用鼠標右鍵選擇模型樹節點User Defined Functions,點擊彈出菜單項Interpreted…(圖1-8),Fluent軟件會彈出UDF解釋對話框。

圖1-8 編譯UDF下拉菜單
在彈出的對話框中,利用Browse…按鈕添加UDF源文件,點擊Interpret按鈕進行解釋,見圖1-9,待解釋完畢后可關閉對話框。

圖1-9 編譯UDF
本案例也可以采用編譯的方式運行。
1.7.5 Hook UDF
UDF編譯完成后,需要將UDF加載到Fluent中。這部分工作可以通過相應的GUI來實現。 DEFINE_INIT宏需要在User Defined標簽頁下的Funcition Hooks…中進行加載,如圖1-10所示。

圖1-10 加載UDF
選擇此按鈕后打開UDF加載對話框,如圖1-11所示。選擇Initialization后方的Edit…按鈕,打開對話框。在對話框中選擇要加載的UDF宏,操作順序如圖1-12所示。

圖1-11 UDF加載對話框

圖1-12 UDF選擇
1.7.6 查看結果
在查看初始化結果之前,需要開啟相應的模型。由于本案例初始化的是溫度變量,所以必須首先開啟能量方程,如圖1-13所示。之后進行初始化,如圖1-14所示。初始化完畢后可以查看溫度云圖分布,見圖1-15。

圖1-13 開啟能量方程

圖1-14 初始化計算

圖1-15 溫度云圖分布
可以看到橢圓形區域初始溫度設置為500K。 按同樣的道理,可以初始化任何形狀的區域,只要這些區域可以用數學函數來表達。
- 軟件安全技術
- Learning ArcGIS Pro 2
- Java Web開發之道
- Rake Task Management Essentials
- Quarkus實踐指南:構建新一代的Kubernetes原生Java微服務
- Java:High-Performance Apps with Java 9
- Julia for Data Science
- Spring Boot+MVC實戰指南
- Orleans:構建高性能分布式Actor服務
- C語言程序設計
- Functional Python Programming
- ROS機器人編程實戰
- Get Your Hands Dirty on Clean Architecture
- PHP Microservices
- 絕密原型檔案:看看專業產品經理的原型是什么樣