自己选的主题,哭着也要更新完。
单元数据要比节点数据复杂得多。与节点数据仅仅存储节点坐标不同,单元数据中不仅包含单元中心节点等,还包含有各种物理量数据。单元数据访问宏返回网格单元内的信息。大部分的单元宏在头文件metric.h
中定义,这类的宏均以C_
作为前缀。
宏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]; ... } } }
C_VOLUME
宏用于获取网格单元体积。
-
宏调用形式:C_VOLUME(c,t)
-
宏参数:cell_t c, Thread *t
-
数据返回:返回real值
{ real vol; vol = C_VOLUME(c,t); }
C_NNODES
宏用于获取单元体内节点数量。
-
调用形式:C_NNODE(c,t)
-
参数:cell_t c, Thread *t
-
数据返回:返回int类型的节点数量
C_NNODES
宏用于获取单元体内网格面的数量。
-
调用形式:C_NFACES(c,t)
-
参数:cell_t c, Thread *t
-
数据返回:返回int类型的网格面数量
可以通过宏访问网格单元内的物理量参数,如获取密度、压力、速度等。这些宏在头文件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的值 |
计算单元内部物理量的梯度的宏,通常以_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
本篇文章来源于微信公众号: CFD之道
评论前必须登录!
注册