Ansys Fluent表達式進階實例

這篇文章我們介紹幾個比較復雜的案例。下面三個案例在文章末尾都提供了case和dat文件。


1. 案例4:入口物理量=出口物理量

1.1 說明

將出口outlet的溫度減去一個值后賦值給入口inlet


這個案例在交流群里經常會被提到,也有很多同學問起來。很多人建議UDF,但如果通過UDF進行設置,會較為復雜。


本質上就是將模型的出口物理量賦值給入口,不一定是溫度,也可以是壓力、流量等物理量


注:

a. 此案例會用到表達式Functions中的Reduction。所謂Reduction(縮減函數)就是將本來場的數值縮減成一個數,比如Average平均、AreaAve面積平均等。


也就是本來很多數據通過Reduction函數可以縮減為一個數據。


Ansys Fluent表達式進階實例的圖1

b. 這就是我認為Expression功能優于UDF的地方,通過表達式可以直接得到計算域或者邊界某物理量的平均值。

但如果使用UDF則需要對網格進行疊加求平均,如果涉及并行UDF,還需要考慮節點之間的數值傳遞,更加復雜。


1.2  案例描述

模型有一個速度入口和一個壓力出口,初始時,流場溫度293K,壁面溫度333K。入口溫度=出口溫度-10K


打開in邊界條件

Ansys Fluent表達式進階實例的圖2

點擊expression,彈出表達式窗口

Ansys Fluent表達式進階實例的圖3


輸入公式:AreaAve(StaticTemperature,['out'])-10[K]

AreaAve(<expr>,[, ...]):Reduction函數,表示面積平均。

<expr>表示需要面積平均的物理量或者表達式,本例即溫度StaticTemperature;


[, ...]表示需要進行平均的位置,可以是邊界boundary也可以是計算域cell zone,還可以同時對多個位置進行平均,本例即out邊界。


AreaAve(StaticTemperature,['out'])可以獲取out邊界的面積平均溫度,然后減去10K賦值給入口溫度。


1.3 計算驗證

監測入口和出口溫度,兩者相差10K


Ansys Fluent表達式進階實例的圖4



2. 案例5:根據出口參數調節入口參數

比如我們確定了出口溫度,想知道入口溫度為多少時能達到這個出口溫度。

當然可以手動去試,但是我們更希望能夠自動調節。


2.1 案例描述

壁面溫度333K,出口溫度303K,流速固定。確定入口溫度?

Ansys Fluent表達式進階實例的圖5


思路:根據出口溫度調節入口溫度,如果當前出口溫度較低,增加入口溫度;如果當前出口溫度較高,降低入口溫度。


2.2 物理量命名為表達式Named Expressions

由于需要反復使用入口和出口的面積平均溫度,將入口和出口溫度面積平均保存為Named Expressions,這樣可以直接使用,而不必每次都寫一堆表達式。


User-Defined~Named Expressions~New


Ansys Fluent表達式進階實例的圖6

點擊New,打開表達式窗口


Ansys Fluent表達式進階實例的圖7

Name:輸入表達式的名字tin,后面就可以直接用這個名字來代替下面的表達式

Definition:輸入表達式。

AreaAve(StaticTemperature,['in'])


AreaAve(<expr>,[, ...]):Reduction函數,表示面積平均。

<expr>表示需要面積平均的物理量或者表達式,本例即溫度StaticTemperature;

[, ...]表示需要進行平均的位置,可以是邊界boundary也可以是計算域cell zone,還可以同時對多個位置進行平均,本例即in邊界。


同理命名出口溫度tout

Ansys Fluent表達式進階實例的圖8


2.3 邊界條件設置

上述的命名Named Expressions只是為了邊界條件表達式的方便。現在開始設置邊界條件


根據出口溫度調節入口溫度,因此我們需要設置入口溫度。打開in邊界條件,


Ansys Fluent表達式進階實例的圖9

Thermal界面設置下拉框有expression和Named Expressions

Expression:表示通過表達式的方式設置此邊界條件,我們選擇此項即可

Named Expressions:此選項下的New Expression也是設置表達式,只不過仍然需要給表達式命名,然后再使用


Ansys Fluent表達式進階實例的圖10


IF(tout<302.5[K],tin+0.1[K],IF(tout>303.5[K],tin-0.1[K],tin))


表達式邏輯:

a. 雙重IF語句,IF(,<vector1>,<vector2>),第一個參數為判斷條件,后面的兩個表示要執行的語句。如果為真,則輸出<vector1>,否則輸出<vector2>


b. 我們想要出口溫度為303K,但實際無法控制剛好等于303K,需要給一個范圍302.5K-303.5K之間。


c. 如果出口溫度tout<302.5K,則出口溫度較低,需要增加入口溫度tin。本例設置增加0.1K,增加幅度越小,控制范圍就越小,越接近303K。但計算時間可能越長。這就是公式前半部分的內容IF(tout<302.5[K],tin+0.1[K])


d. 當tout>303.5K時,說明出口溫度較高,tin需要減小0.1K。也就是說即使出口溫度tout不小于302.5K,也不能直接輸出值,還需要一步判斷語句。


e. 當tout不大于303.5K同時也不小于302.5K,也就是兩個if語句的判斷條件都不滿足時,說明此時的出口溫度符合范圍,tin也滿足要求。


f. 如果按照python這種編程語言,很容易理解。

if(tout<302.5):
    tin=tin+0.1
elif(tout>303.5):
    tin=tin-0.1
else:
    tin=tin

g. 紅字的報錯信息只是說明無法畫出入口溫度的圖像,不影響表達式


2.4 計算驗證

按照上述公式輸入后,進行計算。檢測入口和出口的溫度,可以得到溫度曲線圖


Ansys Fluent表達式進階實例的圖11

入口溫度和出口溫度分別為


Ansys Fluent表達式進階實例的圖12


3. 練習:根據出口溫度調節入口流速

壁面溫度333K,出口溫度303K,入口溫度293K。確定入口流速?








答案:

IF(tout<302.5[K],vin-0.001[m/s],IF(tout>303.5[K],vin+0.001[m/s],vin))


Ansys Fluent表達式進階實例的圖13

此時出口溫度周期性波動,無法穩定。說明速度vin的變化量太大了

IF(tout<302.5[K],vin-0.0001[m/s],IF(tout>303.5[K],vin+0.0001[m/s],vin))


Ansys Fluent表達式進階實例的圖14

將變化量改小之后就可以穩定



文章來源:Fluent學習筆記

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

1
2