内容纲要
本文描述了利用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获取计算区域中指定位置的物理量,可以应用在很多的场合,尤其是在跟踪一些运动位置的物理量时,可以将宏放到循环中连续获取不同坐标位置的物理量。本案例在2D下测试,若为3D模型,需要设置P[3]的值,道友们自行尝试。
相关文件:
本篇文章来源于微信公众号: CFD之道
评论前必须登录!
注册