Fluent UDF【14】:向量宏【轉(zhuǎn)發(fā)】

2017-06-11  by:CAE仿真在線  來源:互聯(lián)網(wǎng)

CFD計算中存在眾多的向量,典型的如速度、角速度等。向量的運算要比標量運算復雜,UDF提供了眾多的向量操作宏用于向量的運算。

對于這些向量操作宏,UDF頭文件中對這些宏的名稱進行了區(qū)分。如宏名稱中包含v,則表示為向量,S表示為標量,D表示為向量的三個分量序列,在2D模型中,第三個分量被忽略。矢量函數(shù)不遵循括號、指數(shù)、乘法、除法、加法和減法(PEMDAS)的運算順序約定。 取而代之的是利用下劃線(_)符號將操作數(shù)分組成對,以便在成組之前對元素執(zhí)行操作。

ND操作宏

UDF中使用較多的ND操作宏包括:ND_ND、ND_SUM及ND_SET。

1

ND_ND宏

ND_ND為常數(shù),在2D模型中其值為2,在3D模型中其值為3。

注意:ND_ND宏的值不可以改變。如下語句ND_ND=1是錯誤的。在實際應用過程中,把ND_ND當做是數(shù)字。

如下語句定義了一個矩陣:

real A[ND_ND][ND_ND];

2

ND_SUM宏

ND_SUM宏用于計算其參數(shù)的和。

如代碼:

ND_SUM(x,y,z);

在2D模型中,其等效于:

x+y;

而在3D模型中,其等效于:

x+y+z;

3

ND_SET宏

ND_SET宏用于設置其參數(shù)。如:

ND_SET(u,v,w,C_U(c,t),C_V(c,t),C_W(c,t));

在2D模型中,其等效為:

u = C_U(c,t); v = C_V(c,t);

在3D模型中,其等效為:

u = C_U(c,t); v = C_V(c,t); w = C_W(c,t);
NV操作宏

NV宏與ND宏類似,只不過NV宏操作的是向量。

1

NV_V宏

NV_V宏進行向量賦值操作。如代碼:

NV_V(a, = , x);

其等效于:

a[0] = x[0]; a[1] = x[1]; a[2] = x[2];

宏中間的操作符可以是+=,此時則換為:

a[0] += x[0]; a[1] += x[1]; a[2] += x[2];

2

NV_VV宏

NV_VV宏能實現(xiàn)向量元素操作。如代碼:

NV_VV(a , = , x , + , y);

則其等效于:

a[0] = x[0] + y[0]; a[1] = x[1] + y[1];

3

NV_V_VS宏

此宏可用于向量與標量的乘積運算。如:

NV_V_VS(a, = , x, + , y, *, 0.5);

等效于:

a[0] = x[0] + y[0] * 0.5; a[1] = x[1] + y[1] * 0.5;

4

NV_VS_VS宏

矢量與標量的混合運算。如:

NV_VS_VS(a, =, x, *, 2.0, +, y, *, 0.5);

此語句等效于:

a[0] = (x[0]*2.0) + (y[0]*0.5); a[1] = (x[1]*2.0) + (y[1]*0.5);
向量操作宏

向量操作宏可用于向量的求模運算、點乘與叉乘運算。

1

NV_MAG及NV_MAG2

這兩個宏用于求取向量的模及模的平方。如宏NV_MAG示例:

NV_MAG(x);

等效于:

2D中: sqrt(x[0]*x[0] + x[1]*x[1]); 3D中: sqrt(x[0]*x[0] + x[1]*x[1] + x[2]*x[2]);

而NV_MAG2則計算向量的模的平方。如:

NV_MAG2(x);

等效于:

2D: (x[0]*x[0] + x[1]*x[1]); 3D: (x[0]*x[0] + x[1]*x[1] + x[2]*x[2]);

2

NV_DOT

NV_DO宏用于向量的點積??梢杂卸喾N用法,如下示例:

ND_DOT(x, y, z, u, v, w); 2D: (x*u + y*v); 3D: (x*u + y*v + z*w); NV_DOT(x, u); 2D: (x[0]*u[0] + x[1]*u[1]); 3D: (x[0]*u[0] + x[1]*u[1] + x[2]*u[2]); NVD_DOT(x, u, v, w); 2D: (x[0]*u + x[1]*v); 3D: (x[0]*u + x[1]*v + x[2]*w);

3

向量叉乘

向量叉乘比較麻煩。如下示例:

ND_CROSS_X(x0,x1,x2,y0,y1,y2) 2D: 0.0 ?3D: (((x1)*(y2))-(y1)*(x2))) ND_CROSS_Y(x0,x1,x2,y0,y1,y2) 2D: 0.0 ?3D: (((x2)*(y0))-(y2)*(x0))) ND_CROSS_Z(x0,x1,x2,y0,y1,y2) 2D and 3D: (((x0)*(y1))-(y0)*(x1))) NV_CROSS_X(x,y) ND_CROSS_X(x[0],x[1],x[2],y[0],y[1],y[2]) NV_CROSS_Y(x,y) ND_CROSS_Y(x[0],x[1],x[2],y[0],y[1],y[2]) NV_CROSS_Z(x,y) ND_CROSS_Z(x[0],x[1],x[2],y[0],y[1],y[2]) NV_CROSS(a,x,y) a[0] = NV_CROSS_X(x,y); a[1] = NV_CROSS_Y(x,y); a[2] = NV_CROSS_Z(x,y);

Fluent UDF【14】:向量宏【轉(zhuǎn)發(fā)】fluent結(jié)果圖片1

Fluent UDF【14】:向量宏【轉(zhuǎn)發(fā)】fluent結(jié)果圖片2



轉(zhuǎn)自公眾號:胡坤 CFD仿真之道

開放分享:優(yōu)質(zhì)有限元技術文章,助你自學成才

相關標簽搜索:Fluent UDF【14】:向量宏【轉(zhuǎn)發(fā)】 Fluent培訓 Fluent流體培訓 Fluent軟件培訓 fluent技術教程 fluent在線視頻教程 fluent資料下載 fluent分析理論 fluent化學反應 fluent軟件下載 UDF編程代做 Fluent、CFX流體分析 HFSS電磁分析 

編輯
在線報名:
  • 客服在線請直接聯(lián)系我們的客服,您也可以通過下面的方式進行在線報名,我們會及時給您回復電話,謝謝!
驗證碼

全國服務熱線

1358-032-9919

廣州公司:
廣州市環(huán)市中路306號金鷹大廈3800
電話:13580329919
          135-8032-9919
培訓QQ咨詢:點擊咨詢 點擊咨詢
項目QQ咨詢:點擊咨詢
email:kf@1cae.com