找回密码
 注册
查看: 2460|回复: 1

UDF编程,迭代显示结果if..else不能执行,求解

[复制链接]
发表于 2014-11-13 20:23:22 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 学习小能手_二流 于 2014-11-13 20:23 编辑

我对模型是简单的二维模型,实现的功能是:找到点(0.07,0.07)的当前温度和上一时刻的温度,然后进行简单的处理,经过一步简单的PID控制,将该控制器的出来的值赋给入口边界当入口的速度值。我需要,在0-50步时,首先定义入口速度值为1m/s,然后在经过PID运算,使得点(0.07,0.07)的温度快速稳定下来;在50-100,将入口速度定义为2m/s,然后在经过PID运算,使得点(0.07,0.07)的温度快速稳定下来;在100-150步,定义入口速度为4m/s,然后在经过PID运算,使得点(0.07,0.07)的温度快速稳定下来,大于150,定义入口速度为6m/s,然后在经过PID运算,使得点(0.07,0.07)的温度快速稳定下来。
不知道为什么,C_UDMI(c,t,0)=r-C_T(c,t);       
                       m+=kp*(temp-temp_last)+ki*temp;
                        C_UDMI(c,t,1)=C_UDMI(c,t,0);
    这三句语句放在  if (kount){}里面就不能执行
我的程序如下:
/*迭代时间不同,入口速度也不同*/

#include "udf.h"
#include "mem.h"
#include "metric.h"
int kount=0;
real m;
DEFINE_ADJUST(demo_calc,domain)
{
kount++;
Message("\nkount=%d\n",kount);
}
DEFINE_ADJUST(best_point_temp,domain)
{
cell_t c;
Thread *t;
real xc[ND_ND];
real r=350.;
real kp=0.01,ki=0.01;
real temp_last;
real temp;
// real temp;
/* loop over all cell threads in the domain*/
thread_loop_c(t,domain)
{
/* loop over all cells*/
       
       begin_c_loop(c,t)
        {      
                temp=C_UDMI(c,t,0);       
                temp_last=C_UDMI(c,t,1);   
                  C_UDMI(c,t,0)=r-C_T(c,t);       
                     m+=kp*(temp-temp_last)+ki*temp;
                        C_UDMI(c,t,1)=C_UDMI(c,t,0);
                        Message("\ntemplast=%1f\n",temp_last);
                    Message("\ntemp=%1f\n",temp);
                        Message("\nm=%1f\n",m);
                        if (kount>=50.)
                        {
                        m=1;
                       
                   if((sqrt(ND_SUM(pow(xc[0]-.07,2.),pow(xc[1]-.07,2.),0.)))<.0001)
                        {
                      }
                      else
                    {
                        return;
                    }
                }
                        else if(kount<=100.&&kount>50.)
                        {m=2;
                       
           if((sqrt(ND_SUM(pow(xc[0]-.07,2.),pow(xc[1]-.07,2.),0.)))<.0001)
                {
           }
           else
           {
           return;
           }}
                        else if(kount<=150.&&kount>100)
                        { m=4;
                       
                   if((sqrt(ND_SUM(pow(xc[0]-.07,2.),pow(xc[1]-.07,2.),0.)))<.0001)
                        {
                      }
                      else
                    {
                        return;
                    }        }
                        else
                        { m=6;
                       
       
                   if((sqrt(ND_SUM(pow(xc[0]-.07,2.),pow(xc[1]-.07,2.),0.)))<.0001)
                        {
                      }
                      else
                    {
                        return;
                    }        }
           }
      end_c_loop(c,t)
       
       
  }
}

DEFINE_PROFILE(x_velocity,thread,nv)
{
float x[2];
  float y;
  face_t f;
begin_f_loop(f,thread)
{
           F_PROFILE(f,thread,nv)=m;
       
}
end_f_loop(f,thread)
}


 楼主| 发表于 2014-11-13 20:28:21 | 显示全部楼层
.cas文件附上。初学UDF,请多多指教。

seted1234.zip

36.62 KB, 下载次数: 1

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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