官术网_书友最值得收藏!

1.7 UDF使用流程

這里以一個簡單的初始化案例來描述UDF的源代碼編寫、編譯及加載過程。通過此案例可以熟悉UDF的整個使用流程。

1.7.1 Fluent中的Patch

Fluent中提供了全局初始化以及局部Patch功能。對于整體區域的全局初始化可以采用starndard及hybrid方法進行初始化,指定各種物理量的初始分布。而對于計算域中的局部區域初始化,則可以通過Patch功能來實現。

在使用Patch方法時,首先需要對要進行Patch的區域進行標記。鼠標右鍵選擇樹性節點Solution > Cell Registers,點擊彈出菜單項NewRegion...可彈出區域定義對話框(圖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;
     &ensp;      }
            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。 按同樣的道理,可以初始化任何形狀的區域,只要這些區域可以用數學函數來表達。

主站蜘蛛池模板: 民权县| 招远市| 北票市| 平塘县| 边坝县| 周至县| 申扎县| 集安市| 大洼县| 吉首市| 古蔺县| 嘉峪关市| 胶南市| 穆棱市| 峨边| 龙州县| 嵊州市| 客服| 平湖市| 青龙| 肇源县| 赞皇县| 盘锦市| 礼泉县| 岚皋县| 育儿| 霍林郭勒市| 金坛市| 平塘县| 米易县| 密山市| 甘孜| 会东县| 广宁县| 乌拉特前旗| 叶城县| 宝坻区| 新竹县| 忻城县| 棋牌| 建昌县|