|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
问题我写到注释里面了,速度表达式比较复杂,我写了个含有相同参数的函数代替了。
- /*想写一个速度进口的UDF,其中速度是一个与y,z是横坐标和竖坐标有关的一个随机数,
- 且要求和多次,速度表达式类似于这样V=∑u(y,z),y,z是横坐标和竖坐标。*/
- #include "udf.h"
- #define PI 3.1415926
- DEFINE_PROFILE(inlet_y_velocity, thread, index)
- {
- real x[ND_ND];
- real z,y,v;
- real sum=0;
- real t = CURRENT_TIME;
- int i;
- face_t f;
- begin_f_loop(f, thread)
- {
- C_CENTROID(x, f, thread);
- y=x[1];
- z=x[2];
- v=sin(y+2*PI*rand01(&t))+sin(z+2*PI*rand01(&t)); /*v与y和z有关的一个随机数*/
- for(i=0;i<=100;i++) /*经过试验发现问题就在for循环,没有for循环,结果是正常的,
- 将for语句写到loop循环外面不含质心坐标的情况下结果也是合理的,
- 如果将centroid宏和for循环都写到loop外面,是可以编译成功,但无法计算*/
- {
- sum=sum+v; /*对v求和100次*/
- }
- F_PROFILE(f, thread, index) = sum;
- end_f_loop(f, thread)
- }
- }
- real rand01(real *t) /*随机数的产生*/
- {
- real base,u,v,p,temp1,temp2,temp3;
- base=256.0;
- u=17.0;
- v=139.0;
- temp1=u*(*t)+v;
- temp2=(int)(temp1/base);
- temp3=temp1-temp2*base;
- *t=temp3;
- p=*t/base;
- return p;
- }
复制代码
|
|