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

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

CFD計(jì)算中存在眾多的向量,典型的如速度、角速度等。向量的運(yùn)算要比標(biāo)量運(yùn)算復(fù)雜,UDF提供了眾多的向量操作宏用于向量的運(yùn)算。

對(duì)于這些向量操作宏,UDF頭文件中對(duì)這些宏的名稱進(jìn)行了區(qū)分。如宏名稱中包含v,則表示為向量,S表示為標(biāo)量,D表示為向量的三個(gè)分量序列,在2D模型中,第三個(gè)分量被忽略。矢量函數(shù)不遵循括號(hào)、指數(shù)、乘法、除法、加法和減法(PEMDAS)的運(yùn)算順序約定。 取而代之的是利用下劃線(_)符號(hào)將操作數(shù)分組成對(duì),以便在成組之前對(duì)元素執(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是錯(cuò)誤的。在實(shí)際應(yīng)用過程中,把ND_ND當(dāng)做是數(shù)字。

如下語句定義了一個(gè)矩陣:

real A[ND_ND][ND_ND];

2

ND_SUM宏

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

如代碼:

ND_SUM(x,y,z);

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

x+y;

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

x+y+z;

3

ND_SET宏

ND_SET宏用于設(shè)置其參數(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宏進(jìn)行向量賦值操作。如代碼:

NV_V(a, = , x);

其等效于:

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

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

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

2

NV_VV宏

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

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

則其等效于:

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

3

NV_V_VS宏

此宏可用于向量與標(biāo)量的乘積運(yùn)算。如:

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宏

矢量與標(biāo)量的混合運(yùn)算。如:

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);
向量操作宏

向量操作宏可用于向量的求模運(yùn)算、點(diǎn)乘與叉乘運(yùn)算。

1

NV_MAG及NV_MAG2

這兩個(gè)宏用于求取向量的模及模的平方。如宏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則計(jì)算向量的模的平方。如:

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宏用于向量的點(diǎn)積??梢杂卸喾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)自公眾號(hào):胡坤 CFD仿真之道

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

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

編輯
在線報(bào)名:
  • 客服在線請(qǐng)直接聯(lián)系我們的客服,您也可以通過下面的方式進(jìn)行在線報(bào)名,我們會(huì)及時(shí)給您回復(fù)電話,謝謝!
驗(yàn)證碼

全國服務(wù)熱線

1358-032-9919

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