吾生有涯 学海无涯
析模有界 知识无界

UDF|输出指定位置的物理量

内容纲要

本文描述了利用UDF宏输出指定坐标位置的物理量的两种方法与例程。

Fluent中提供了Report及Monitor工具用于监测指定位置的物理量。但如果位置坐标不是固定的,则难以采用监测的方式实现此功能(其实也不是不可以,只不过需要使用Scheme计算监测点的坐标),此时可以利用UDF将指定坐标点的物理量输出到文件。

1 宏介绍

在UDF中想要输出单元体的物理量,如输出压力可以使用宏C_P,需要利用到两个参数:Cell_t ct及Thread *t。因此输出指定位置的物理量,其核心为利用UDF宏根据坐标点的位置获取变量ct及t,这可以使用UDF宏CX_Find_Cell_With_Point实现。该宏定义于头文件cxndsearch.h中。

宏定义为:

#include "udf.h"
#include "dpm.h"
DEFINE_ON_DEMAND(find_cell)
{
#if !RP_HOST
cell_t c;
Thread *t;
CX_Cell_Id cx_cell;
real velocity;
real P[2];
real P_Cell[2];

DPM_Init_Oct_Tree_Search();
Message("coord Xt Coord Y t Velocityn");
/*若想要输出(0.5,0)点的数据,那就设置i=0*/
for(int i =1; i< 20; i++)
{
P[0] = 0.5;
P[1] = (real)(i/19.0);
cx_cell.ct.c = 0;
cx_cell.ct.t = NULL;
DPM_Locate_Point(P,&cx_cell,0.0,0);

if(NNULLP(cx_cell.ct.t))
{
c = RP_CELL(&cx_cell);
t = RP_THREAD(&cx_cell);
C_CENTROID(P_Cell,c,t);/*可以得到网格中心坐标,本案例没有使用*/
velocity = sqrt(C_U(c,t)*C_U(c,t)+ C_V(c,t)*C_V(c,t));
Message("%f t %f t %f n",P[0],P[1],velocity);
}else
{
Message("Could not find cell at [%f,%f]!n",P[0],P[1]);
}

}
DPM_End_Oct_Tree_Search();
#endif
}

输出结果如下图所示。

▲ UDF输出结果

利用UDF获取计算区域中指定位置的物理量,可以应用在很多的场合,尤其是在跟踪一些运动位置的物理量时,可以将宏放到循环中连续获取不同坐标位置的物理量。本案例在2D下测试,若为3D模型,需要设置P[3]的值,道友们自行尝试。

相关文件:

本篇文章来源于微信公众号: CFD之道

赞(3) 打赏
版权声明:未经允许,请勿随意用于商业用途。
文章名称:《UDF|输出指定位置的物理量》
文章链接:https://www.topcfd.cn/14541/
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到

说两句 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者吧

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册