找回密码
 注册
查看: 746|回复: 3

求助:速度进口udf,for循环求和时有问题,下面是我写的udf

[复制链接]
发表于 2020-4-1 15:14:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
问题我写到注释里面了,速度表达式比较复杂,我写了个含有相同参数的函数代替了。
  1. /*想写一个速度进口的UDF,其中速度是一个与y,z是横坐标和竖坐标有关的一个随机数,
  2. 且要求和多次,速度表达式类似于这样V=∑u(y,z),y,z是横坐标和竖坐标。*/
  3. #include "udf.h"
  4. #define PI 3.1415926
  5. DEFINE_PROFILE(inlet_y_velocity, thread, index)
  6. {
  7.         real x[ND_ND];
  8.         real z,y,v;
  9.         real sum=0;
  10.         real t = CURRENT_TIME;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
  11.         int i;
  12.         face_t f;
  13.                         begin_f_loop(f, thread)
  14.                         {
  15.                         C_CENTROID(x, f, thread);
  16.                         y=x[1];
  17.                         z=x[2];
  18.                         v=sin(y+2*PI*rand01(&t))+sin(z+2*PI*rand01(&t));   /*v与y和z有关的一个随机数*/
  19.                         for(i=0;i<=100;i++)     /*经过试验发现问题就在for循环,没有for循环,结果是正常的,
  20.                                                                         将for语句写到loop循环外面不含质心坐标的情况下结果也是合理的,
  21.                                                                         如果将centroid宏和for循环都写到loop外面,是可以编译成功,但无法计算*/
  22.                         {
  23.             sum=sum+v;    /*对v求和100次*/
  24.                         }
  25.                         F_PROFILE(f, thread, index) = sum;
  26.                         end_f_loop(f, thread)
  27.             }
  28. }                       
  29. real rand01(real *t)  /*随机数的产生*/
  30. {
  31.         real base,u,v,p,temp1,temp2,temp3;
  32.     base=256.0;
  33.     u=17.0;
  34.     v=139.0;
  35.     temp1=u*(*t)+v;
  36.           temp2=(int)(temp1/base);
  37.           temp3=temp1-temp2*base;
  38.            *t=temp3;
  39.     p=*t/base;
  40.     return p;
  41. }
复制代码

 楼主| 发表于 2020-4-23 22:22:11 | 显示全部楼层
问题解决了,有做脉动风的吗?一起交流一下
发表于 2021-2-14 10:14:59 | 显示全部楼层
你好,最近也在做脉动风相关的,有些问题想要请教下,有空方便交流一下吗?
发表于 7 天前 | 显示全部楼层
楼主方便加好友吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表