18419367467 发表于 2020-4-1 15:14:05

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

问题我写到注释里面了,速度表达式比较复杂,我写了个含有相同参数的函数代替了。
/*想写一个速度进口的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;
        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;
                        z=x;
                        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;
}

18419367467 发表于 2020-4-23 22:22:11

问题解决了,有做脉动风的吗?一起交流一下

DWW 发表于 2021-2-14 10:14:59

你好,最近也在做脉动风相关的,有些问题想要请教下,有空方便交流一下吗?

yr111 发表于 2021-2-20 14:27:16

楼主方便加好友吗

18419367467 发表于 2021-3-21 12:16:47

DWW 发表于 2021-2-14 10:14
你好,最近也在做脉动风相关的,有些问题想要请教下,有空方便交流一下吗?

加我qq2576254285

18419367467 发表于 2021-3-21 12:17:37

DWW 发表于 2021-2-14 10:14
你好,最近也在做脉动风相关的,有些问题想要请教下,有空方便交流一下吗?

加我qq2576254285
页: [1]
查看完整版本: 求助:速度进口udf,for循环求和时有问题,下面是我写的udf