知方号

知方号

Fluent UDF(四)数据访问宏(2)

上一节介绍了网格节点和网格面数据获取宏,本节继续介绍网格单元数据获取宏。

网格单元 (cell) 存储着许多几何参数和物理参数(单元中心、温度、压力等变量),这些参数均可利用对应的单元数据获取宏进行数据访问和操作,单元宏以C_前缀开头,获取的变量均以国际单位制 (SI) 返回,对于某些特定数据获取宏,只有启用对应模型状态下才能使用。

例如,当在 Fluent 的 "Species Model"选项卡中启用组分输运模型时,才能访问获取组分质量分数。

3.1 单元质心 (C_CENTROID)

与前述获取面心坐标宏F_CENTROID类似,利用C_CENTROID(x,c,t)宏可获取单元质心坐标,其定义如下:

宏参数类型返回值C_CENTROID(x,c,t)real x[ND_ND], cell_t c, Thread * tx (cell centroid)

C_CENTROID(x,c,t)宏包含三个参数:

x 用于存储获取质心的坐标信息,数组维度取决于求解问题;c 为单元标识符;t 是表示单元所属的单元线程的线程指针。

x、c、t 为自定义的变量名,可采用其他符合C语言命名规则的变量名。

例如:real pos(ND_ND)、cell_t cell、Thread *ct

数据获取宏不能单独使用,一般得根据问题和其他DEFINE宏和循环宏搭配使用,用法如下:

Domain *domain;Thread *c_thread;cell_t c;real pos(ND_ND);//用于存储质心坐标的数组thread_loop_c(c_thread,domain){ begin_c_loop(c,c_thread){ C_CENTROID(pos, c, t); /*对质心坐标进行操作*/}end_c_loop(c,c_thread)}

示例:下列 UDF 用于初始化单元的温度分布。如果单元质心坐标与点 ( 0.5 , 0.5 , 0.5 ) (0.5, 0.5, 0.5) (0.5,0.5,0.5) 的距离小于 0.25 0.25 0.25,则将该单元的温度设置为 400 K 400 ext{K} 400K,否则设置为 300 K 300 ext{K} 300K。

#include "udf.h"// 定义一个初始化函数,名字为 my_init_func,应用于域 dDEFINE_INIT(my_init_func, d){ cell_t c; // 定义一个变量 c,用于存储单元的索引 Thread *t; // 定义一个指针 t,用于指向单元线程 real xc[ND_ND]; // 定义一个数组 xc,用于存储单元质心的坐标 // 遍历域 d 中的所有单元线程 thread_loop_c(t, d) { // 遍历单元线程 t 中的所有单元 begin_c_loop(c, t) { // 获取单元 c 的质心坐标,并存储在 xc 数组中 C_CENTROID(xc, c, t); // 计算质心与点 (0.5, 0.5, 0.5) 的距离 if (sqrt(ND_SUM(pow(xc[0] - 0.5, 2.0), pow(xc[1] - 0.5, 2.0), pow(xc[2] - 0.5, 2.0)))

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。