Ansys Fluent表達式進階實例
這篇文章我們介紹幾個比較復雜的案例。下面三個案例在文章末尾都提供了case和dat文件。
1. 案例4:入口物理量=出口物理量
1.1 說明
將出口outlet的溫度減去一個值后賦值給入口inlet
這個案例在交流群里經常會被提到,也有很多同學問起來。很多人建議UDF,但如果通過UDF進行設置,會較為復雜。
本質上就是將模型的出口物理量賦值給入口,不一定是溫度,也可以是壓力、流量等物理量
注:
a. 此案例會用到表達式Functions中的Reduction。所謂Reduction(縮減函數)就是將本來場的數值縮減成一個數,比如Average平均、AreaAve面積平均等。
也就是本來很多數據通過Reduction函數可以縮減為一個數據。
b. 這就是我認為Expression功能優于UDF的地方,通過表達式可以直接得到計算域或者邊界某物理量的平均值。
但如果使用UDF則需要對網格進行疊加求平均,如果涉及并行UDF,還需要考慮節點之間的數值傳遞,更加復雜。
1.2 案例描述
模型有一個速度入口和一個壓力出口,初始時,流場溫度293K,壁面溫度333K。入口溫度=出口溫度-10K
打開in邊界條件
點擊expression,彈出表達式窗口
輸入公式:AreaAve(StaticTemperature,['out'])-10[K]
AreaAve(<expr>,[, ...]):Reduction函數,表示面積平均。
[, ...]表示需要進行平均的位置,可以是邊界boundary也可以是計算域cell zone,還可以同時對多個位置進行平均,本例即out邊界。
AreaAve(StaticTemperature,['out'])可以獲取out邊界的面積平均溫度,然后減去10K賦值給入口溫度。
1.3 計算驗證
監測入口和出口溫度,兩者相差10K
2. 案例5:根據出口參數調節入口參數
比如我們確定了出口溫度,想知道入口溫度為多少時能達到這個出口溫度。
當然可以手動去試,但是我們更希望能夠自動調節。
2.1 案例描述
壁面溫度333K,出口溫度303K,流速固定。確定入口溫度?
思路:根據出口溫度調節入口溫度,如果當前出口溫度較低,增加入口溫度;如果當前出口溫度較高,降低入口溫度。
2.2 物理量命名為表達式Named Expressions
由于需要反復使用入口和出口的面積平均溫度,將入口和出口溫度面積平均保存為Named Expressions,這樣可以直接使用,而不必每次都寫一堆表達式。
User-Defined~Named Expressions~New
點擊New,打開表達式窗口
Name:輸入表達式的名字tin,后面就可以直接用這個名字來代替下面的表達式
Definition:輸入表達式。
AreaAve(StaticTemperature,['in'])
AreaAve(<expr>,[, ...]):Reduction函數,表示面積平均。
<expr>表示需要面積平均的物理量或者表達式,本例即溫度StaticTemperature;
[, ...]表示需要進行平均的位置,可以是邊界boundary也可以是計算域cell zone,還可以同時對多個位置進行平均,本例即in邊界。
同理命名出口溫度tout
2.3 邊界條件設置
上述的命名Named Expressions只是為了邊界條件表達式的方便。現在開始設置邊界條件
根據出口溫度調節入口溫度,因此我們需要設置入口溫度。打開in邊界條件,
Thermal界面設置下拉框有expression和Named Expressions
Expression:表示通過表達式的方式設置此邊界條件,我們選擇此項即可
Named Expressions:此選項下的New Expression也是設置表達式,只不過仍然需要給表達式命名,然后再使用
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 計算驗證
按照上述公式輸入后,進行計算。檢測入口和出口的溫度,可以得到溫度曲線圖
入口溫度和出口溫度分別為
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))
此時出口溫度周期性波動,無法穩定。說明速度vin的變化量太大了
IF(tout<302.5[K],vin-0.0001[m/s],IF(tout>303.5[K],vin+0.0001[m/s],vin))
將變化量改小之后就可以穩定
文章來源:Fluent學習筆記
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















