|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
本人目前写了一个UDF,大概就是关于颗粒碰到壁面,若温度大于150即被捕获,输出被捕获颗粒的坐标并返回abort。否则返回active。UDF如下
#include "udf.h"
#include "dpm.h"
#include "stdio.h"
FILE *fp;
DEFINE_DPM_BC(JIEZHA,p,t,f,f_normal,dim)
{
if (P_T(p)>150)
{
fp=fopen("e://out.txt","a+";
fprintf(fp,"%g %g %g\n",P_POS(p)[0],P_POS(p)[1],P_POS(p)[2]);
fclose(fp);
return PATH_Abort;
}
else
return PATH_ACTIVE;
}
然而,我发现输出到txt的颗粒数远远大于插入的颗粒数,(插入10000个颗粒,输出几十万的颗粒)。仔细查看后,发现每一个时间步中的每一次迭代都有颗粒坐标的输出,也就是说,那些已经被终止的颗粒还是在被继续追踪,我怀疑是不是没有在UDF中加入移除颗粒轨迹这一步,导致重复输出颗粒坐标。然而,返回path_abort的意思不就是trap吗,既然trap了颗粒轨迹不是已经自动移除了吗,难道还要手动添加颗粒轨迹的移除吗。请大神不吝赐教
|
|