UDS傳輸方程定義宏
翻譯自ANSYS_Fluent_UDF_Manual。
1. 介紹
對于在ANSYS Fluent模型中指定的每個標(biāo)量方程,可以為標(biāo)量傳輸方程中的擴(kuò)散系數(shù)、通量和非穩(wěn)態(tài)項提供唯一的UDF。對于多相,您還可以在流體區(qū)和固體區(qū)中按相指定UDF。此外,可以為給定標(biāo)量方程定義的每個源項以及墻、流入和流出邊界上的邊界條件指定UDF.
1.1 擴(kuò)散系數(shù)自定義函數(shù)
對于在ANSYS FLUENT模型中使用用戶定義的標(biāo)量對話框指定的每個標(biāo)量方程,可以為流體和固體材料的各向同性和各向異性擴(kuò)散率提供唯一的用戶定義函數(shù)(UDF)。
各向同性擴(kuò)散率UDF使用DEFINE_DEMUSITY宏定義,各向異性系數(shù)UDF使用DEFINE_ANCONTIONAL_DEMUSITRITY定義。在用戶定義標(biāo)量(UDS)傳輸方程式宏中提供了編碼UDS函數(shù)時可以使用的其他預(yù)定義宏。
1.2 通量自定義項
對于在ANSYS Fluent模型中使用用戶定義的標(biāo)量對話框指定的每個標(biāo)量方程,可以為平流通量項提供唯一的用戶定義函數(shù)(或UDF)。UDS Flux UDF是使用DEFINE_UDS_FLUX宏(DEFINE_UDS_FLUX定義的。
1.3 非穩(wěn)態(tài)自定義函數(shù)
對于在ANSYS FLUENT模型中指定的每個標(biāo)量方程式,都可以使用“用戶定義的標(biāo)量”(User Defined Scalars)對話框為非穩(wěn)定函數(shù)提供唯一的UDF。非穩(wěn)態(tài)UDF是使用DEFINE_UDS_UNSTATED宏定義。
1.4 源項自定義項
對于在ANSYS Fluent模型中使用用戶定義的標(biāo)量對話框指定的每個標(biāo)量方程式,可以為每個源提供唯一的UDF。標(biāo)量源UDF使用DEFINE_SOURCE宏定義,并且必須計算源項及其派生項(DEFINE_SOURCE(p.147))。
1.5 固定值邊界條件自定義項
對于在ANSYS Fluent模型中使用用戶定義的標(biāo)量對話框指定的每個標(biāo)量方程式,可以為流體邊界提供固定值配置文件UDF。固定值UDF是使用DEFINE_PROFILE宏定義的。
1.6 墻、流入和流出邊界條件UDF
對于已在ANSYS FLUENT模型中使用“用戶定義的標(biāo)量”(User Defined Scalars)對話框指定的每個標(biāo)量方程式,可以為所有壁、流入和流出邊界提供指定值或通量UDF。墻、流入和流出邊界UDF是使用DEFINE_PROFILE宏定義的。
2. DEFINE_ANISOTROPIC_DIFFUSIVITY
2.1介紹
可使用DEFINE_ANORANSTIONAL_DEMUSITY為用戶定義標(biāo)量(UDS)傳輸方程指定各向異性擴(kuò)散系數(shù)。有關(guān)ANSYS Fluent中各向異性漫反射材質(zhì)特性的詳細(xì)信息,請參見手冊的《用戶手冊》中的各向異性擴(kuò)散。
2.2 用法
DEFINE_ANISOTROPIC_DIFFUSIVITY (name, c, t, i, dmatrix)
參數(shù)類型
symbol name ? ? ? udf名稱
cell_t c ? ? ??????????? 網(wǎng)格單元索引
Thread *t???????????? 指向要應(yīng)用各向異性擴(kuò)散系數(shù)函數(shù)的單元格線程的指 針 ?
int I ???????????????????? 標(biāo)識用戶定義標(biāo)量的索引
real dmatrix[ND_ND][ND_ND] ? ?由用戶填寫的各向異性擴(kuò)散系數(shù)矩陣。
無函數(shù)返回
定義各向異性擴(kuò)散率有五個參數(shù):name、c、t、i和dmatrix。您將提供名稱,即UDF的名稱。C、t、i和dmatrix是由ANSYS Fluent求解器傳遞給您的UDF的變量。您的函數(shù)將計算單個單元格的擴(kuò)散系數(shù)張量,并用它填充dmatrix。請注意,各向異性擴(kuò)散率自定義函數(shù)由ANSYS Fluent從單元線程的循環(huán)中調(diào)用。因此,您的UDF將不需要循環(huán)遍歷線程中的單元格,因為ANSYS Fluent是在函數(shù)調(diào)用之外執(zhí)行此操作的。
2.3例子(詳見UDF手冊2.7.2.3)
以下名為cyl_oreo_diff的UDF計算圓柱殼的各向異性擴(kuò)散系數(shù)矩陣,該圓柱殼在徑向、切向和軸向具有不同的擴(kuò)散系數(shù)。此函數(shù)可作為編譯的UDF執(zhí)行。
3. DEFINE_UDS_FLUX
3.1介紹
可以使用DEFINE_UDS_FLUX定制如何在用戶定義的標(biāo)量(UDS)傳輸方程式中計算平流通量項。
3.2 用法
DEFINE_UDS_FLUX (name,f,t,i)
參數(shù)類型
symbol name ? ? ?????????????????名稱
face_t f ? ? ?????????????????????????? 面索引
Thread *t ?? ???????????????????????? 指向要應(yīng)用用戶定義的標(biāo)量通量的面線程的指針
int I ? ?????????????????????????????????? 標(biāo)識要為其設(shè)置通量項的用戶定義標(biāo)量的索引
數(shù)據(jù)返回
DEFINE_UDS_FLUX有四個參數(shù):name、f、t和i。您可以提供name,即UDF的名稱。F、t和i是由ANSYS Fluent求解器傳遞給您的UDF的變量。您的UDF需要將通過給定面的質(zhì)量流率的實際值返回給求解器。
微分輸運方程中的平流項具有以下最一般的形式:

其中是Φ用戶定義的標(biāo)量守恒量,是向量場。在默認(rèn)平流項中,默認(rèn)情況下是標(biāo)量密度和速度矢量的乘積:

若要使用DEFINE_UDS_FLUX定義公式3.1中的平流項,UDF必須將標(biāo)量值返回到ANSYS Fluent,其中與公式3.1中定義的值相同,是面的面法向向量。
注意:由您的UDF提供的平流通量場應(yīng)該是DISGENFREE(即,它滿足連續(xù)性方程),在離散術(shù)語中,這意味著在每個單元的所有面上的通量總和應(yīng)為零。如果平流場不是無輻散的,那么Φ就不是“守恒的”,并且會導(dǎo)致的Φ單元值超調(diào)/欠調(diào)。
例如,您需要使用ANSYS Fluent提供的速度矢量和標(biāo)量密度的預(yù)定義宏(參見Chapter 3: Additional Macros for Writing UDFs)或使用您自己的規(guī)定在UDF中進(jìn)行計算。第一種情況如示例C源代碼所示,如下所示。
注意:如果要求解多個標(biāo)量,則可以在UDF中使用條件IF語句為每個i定義不同的通量函數(shù)。i=0與標(biāo)量0(要求解的第一個標(biāo)量方程)相關(guān)聯(lián)。另請注意,必須有以國際標(biāo)準(zhǔn)為單位的質(zhì)量流量單位(即千克/秒)。
/*********************************************************************
????sample C source code that computes dot product of psi and A
????Note that this is not a complete C function
?**********************************************************************/
?real NV_VEC(psi), NV_VEC(A); ??/* declaring vectors psi and A */
/* defining psi in terms of velocity field */
?NV_D(psi, =, F_U(f,t), F_V(f,t), F_W(f,t));
?NV_S(psi, *=, F_R(f,t)) ?/* multiplying density to get psi vector ?*/
?F_AREA(A,f,t) ???/* face normal vector returned from F_AREA */
?return NV_DOT(psi,A); ?/* dot product of the two returned ??*/
此外,由于ANSYS Fluent中的大多數(shù)量在內(nèi)存中沒有分配給內(nèi)部面,而只分配給邊界面(例如,墻區(qū)),因此您的UDF還需要從相鄰單元格的單元格值計算內(nèi)部面值。這是使用算術(shù)平均法最容易完成的。矢量算術(shù)可以使用NV_和ND_宏用C語言編寫(Chapter 3: Additional Macros for Writing UDFs)。
請注意,如果必須在的定義中沒有流體密度的情況下在UDF中實現(xiàn)缺省平流項(請參見上文),則只需在DEFINE_UDS_FLUX UDF中放入以下行即可:
return F_FLUX(f,t) / rho;
其中可以通過平均相鄰像元的密度值來確定
C_R(F_C0(f,t),THREAD_T0(t)) 和?C_R(F_C1(f,t),THREAD_T1(t))
3.3 例子(參見UDF文檔2.7.3.3)
以下名為MY_UDS_FLUX的UDF返回通過給定面的質(zhì)量流速。通量通??赏ㄟ^ANSYS Fluent提供的宏F_Flux(f,t)獲得。如果流動方向與面區(qū)域法線方向相同(由F_Area確定),則由ANSYS Fluent求解器計算的通量符號為正,如果流動方向和面區(qū)域矢量(F_Area)相同,則通量符號為負(fù)。按照慣例,對于邊界面,面面積法線始終指向域外,對于內(nèi)部面,它們指向從單元格c0到單元格c1的方向。UDF必須作為編譯的UDF執(zhí)行。
4.?DEFINE_UDS_UNSTEADY
4.1?介紹
使用DEFINE_UDS_UNSTATABLE定制用戶定義標(biāo)量(UDS)傳輸方程式中的非穩(wěn)態(tài)項。
4.2?用法
DEFINE_UDS_UNSTEADY (name,c,t,i,apu,su)
參數(shù)類型
symbol name??? 名稱
cell_t c ???????????? 網(wǎng)格單元索引
Thread *t??????????指向要應(yīng)用用戶定義標(biāo)量傳輸方程的不穩(wěn)定項的單元線程的指針
int i?????????????????? 標(biāo)識要為其設(shè)置不穩(wěn)定項的用戶定義標(biāo)量的索引。
real *apu??????????指向中心系數(shù)的指針。
real *su????????????指向源項的指針。
無數(shù)據(jù)返回
DEFINE_UDS_UNSTRATE有六個參數(shù):name、c、t、i、apu和su.您提供name,即UDF的名稱。C、t和i是由ANSYS Fluent求解器傳遞給UDF的變量。您的UDF需要將真實指針apu和su引用的非穩(wěn)定態(tài)項的值分別設(shè)置為中心系數(shù)和源項。
ANSYS Fluent求解器預(yù)計瞬態(tài)項將被分解成源項su和中心系數(shù)項Ap,這些項包括在方程集中的方式與處理源項的顯式和隱式分量的方式相似。因此,非定常項被移到右側(cè),并按如下方式離散化:

上式4.1展示了su和apu是如何定義的。請注意,如果要求解多個標(biāo)量,則可在UDF中使用條件IF語句為每個i定義不同的不穩(wěn)定項。i=0與標(biāo)量-0(要求解的第一個標(biāo)量方程)相關(guān)聯(lián)。
4.3例子(參見UDF文檔2.7.4.3)
以下名為MY_UDS_UNSTATABLE的UDF使用DEFINE_UDS_UNSTEADY修改用戶定義的標(biāo)量時間導(dǎo)數(shù)。源代碼可在ANSYS Fluent中解釋或編譯。
/***********************************************************************
???UDF for specifying user-defined scalar time derivatives
?************************************************************************/
?#include "udf.h"
?DEFINE_UDS_UNSTEADY(my_uds_unsteady,c,t,i,apu,su)
?{
????real physical_dt, vol, rho, phi_old;
????physical_dt = RP_Get_Real("physical-time-step");
????vol = C_VOLUME(c,t);
????rho = C_R_M1(c,t);
????*apu = -rho*vol / physical_dt;/*implicit part*/
????phi_old = C_STORAGE_R(c,t,SV_UDSI_M1(i));
????*su = rho*vol*phi_old/physical_dt;/*explicit part*/
?}