打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Fluent UDF【11】:单元数据访问宏
userphoto

2023.10.23 四川

关注

自己选的主题,哭着也要更新完。

单元数据要比节点数据复杂得多。与节点数据仅仅存储节点坐标不同,单元数据中不仅包含单元中心节点等,还包含有各种物理量数据。单元数据访问宏返回网格单元内的信息。大部分的单元宏在头文件metric.h 中定义,这类的宏均以C_作为前缀。

1

C_CENTROID宏

C_CENTROID用于获取网格单元中心坐标。

  • 宏调用形式:C_CENTROID(x,c,t)

  • 宏参数:real x[ND_ND], cell_t c, Thread *t

  • 数据返回:以参数x传址调用返回

该宏以参数作为返回值,因此需要事先通过real x[ND_ND]定义参数x。程序片段如:

{    cell_t c;    real x[ND_ND];    real y;    thread_loop_c(t,d)    {        begin_c_loop_all(c,t)        {            C_CENTROID(x,c,t);            y = x[1];            ...         }    } }

2

C_VOLUME

C_VOLUME宏用于获取网格单元体积。

  • 宏调用形式:C_VOLUME(c,t)

  • 宏参数:cell_t c, Thread *t

  • 数据返回:返回real值

{    real vol;    vol = C_VOLUME(c,t); }

3

C_NNODES

C_NNODES宏用于获取单元体内节点数量。

  • 调用形式:C_NNODE(c,t)

  • 参数:cell_t c, Thread *t

  • 数据返回:返回int类型的节点数量

4

C_NFACES

C_NNODES宏用于获取单元体内网格面的数量。

  • 调用形式:C_NFACES(c,t)

  • 参数:cell_t c, Thread *t

  • 数据返回:返回int类型的网格面数量

5

获取物理量参数

可以通过宏访问网格单元内的物理量参数,如获取密度、压力、速度等。这些宏在头文件mem.h中定义。

参数返回值

C_R(c,t)

cell_t c, Thread *t

密度

C_P(c,t)

cell_t c, Thread *t

压力

C_U(c,t)

cell_t c, Thread *t

u速度

C_V(c,t)

cell_t c, Thread *t

v速度

C_W(c,t)

cell_t c, Thread *t

w速度

C_T(c,t)

cell_t c, Thread *t

温度

C_H(c,t)

cell_t c, Thread *t

C_K(c,t)

cell_t c, Thread *t

湍动能

C_NUT(c,t)

cell_t c, Thread *t

湍流粘度

C_D(c,t)

cell_t c, Thread *t

湍动能耗散率

C_O(c,t)

cell_t c, Thread *t

比耗散率

C_YI(c,t,i)

cell_t c, Thread *t,int i

组分质量分数

C_IGNITE(c,t)

cell_t c, Thread *t

点火质量分数

C_PREMIXC_T(c,t)

cell t c, Thread *t

预混燃烧温度

C_STORAGE_R(c,t,nv)

cell_t c, Thread *t, real nv

变量nv的值

6

梯度计算宏

计算单元内部物理量的梯度的宏,通常以_G为后缀,如计算温度梯度C_T_G

注意:梯度变量仅在相关变量被求解后才可用。

如:当定义了能量源项后,UDF中能够利用宏C_T_G访问单元温度,然而却不能使用C_U_G宏访问x方向速度梯度。主要 原因在于求解器为了考虑计算效率,在求解时从内存中去除了不被使用的数据。如果一定要保留这些梯度数据,可以使用TUI命令solve/set/expert,之后在系统提示Keep temporary solver memory from being freed?后输入yes。这样的话所有的梯度数据都会被保留,但是计算过程中会消耗更多的内存。

可以使用此方式调用梯度宏:

/*返回x方向温度梯度*/
real xtG = C_T_G(c,t)[0];

梯度访问宏包括:

宏参数返回值

C_P_G(c,t)

cell_t c, Thread *t

压力梯度向量

C_U_G(c,t)

cell_t c, Thread *t

u速度梯度向量

C_V_G(c,t)

cell_t c, Thread *t

v速度梯度向量

C_W_G(c,t)

cell_t c, Thread *t

w速度梯度向量

C_T_G(c,t)

cell_t c, Thread *t

温度梯度向量

C_H_G(c,t)

cell_t c, Thread *t

焓梯度向量

C_NUT_G(c,t)

cell_t c, Thread *t

湍流粘度梯度向量

C_K_G(c,t)

cell_t c, Thread *t

湍动能梯度向量

C_D_G(c,t)

cell_t c, Thread *t

湍动能耗散率梯度向量

C_O_G(c,t)

cell_t c, Thread *t

比耗散率梯度向量

C_YI_G(c,t,i)

cell_t c, Thread *t,int i

组分质量分数梯度向量

注意:C_P_G只能用于压力基求解器。C_YI_G只能用于密度基求解器,若要在压力基中使用此宏C_YI_G,则需要设置’species/save-gradients?为#t

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Fluent UDF【10】:网格面数据访问宏
UDF中的常用宏-Cell Field Variable Macros和Looping Macros
matlab中(),[],与{}的区别认识
Matlab中(),[],与{}的区别
利用基于局部梯度更新规则的伪元胞自动机进行数据挖掘
一步一步动画图解LSTM和GRU,没有数学,包你看的明白
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服