UDF中编译for循环语句出错

浏览:86777 回答:9
UDF代码如下:
代码是为了实现对计算区域进行速度为梯形波的运动模式的加载,即速度由0加速(x正方向,达到一定速度时)→匀速(一段时间)→减速(到x反向速度)→反向匀速→减速(正向速度)……,为了实现这么一个运动模式。
#include "udf.h"
DEFINE_TRANSIENT_PROFILE(z_omiga,time)
{
real z_omiga = 0.0;
real T0 = 0.0741;
if(time<=1/2*T0)
{
z_omiga =63.6173*time;
}
else if(time>1/2*T0&&time<=T0)
{
z_omiga = 2.3562;
}
else if(time>T0&&time<=3/2*T0)
{
z_omiga = 2.3562-63.6173*(time-T0);
}
else if(time>3/2*T0)
{
for(i=0;i<=30;i++)
{
if(time>(3/2+5*i)*T0&&time<(2+5*i)*T0)
{
z_omiga = -63.6173*(time-(3/2+5*i)*T0);
}
else if(time>(2+5*i)*T0&&time<=(7/2+5*i)*T0)
{
z_omiga = -2.3562;
}
else if(time>(7/2+5*i)*T0&&time<(9/2+5*i)*T0)
{
z_omiga = 2.3562-63.6173*(time-(7/2+5*i)*T0);
}
else if(time>(9/2+5*i)*T0&&time<=(6+5*i)*T0)
{
z_omiga = 2.3562;
}
else if(time>(6+5*i)*T0&&time<(13/2+5*i)*T0)
{
z_omiga = 2.3562-63.6173*(time-(13/2+5*i)*T0);
}
}
}
z_omiga = 0.0;
return z_omiga;
}
interpreted到Fluent中,错误提示为:z_omiga_0.75pi_22rpm_30T_adv.c: line 20: i: undeclared variable,即标红的for语句行出错,大神们,应该如果改进? 或者如何重新编译这个UDF实现速度为梯形波的运动模式?
邀请回答 我来回答

全部回答

(9)
默认 最新
haohao549

好人版主,遇到一个新问题,您得空看看哈
http://forums.caenet.cn/showtopic-552118.aspx
2013年12月12日
评论 点赞
csuperfect

宏括号里头的只是UDF名称,而里头是一个变量,需要区别对待。
2013年12月3日
评论 点赞
haohao549
感谢版主,确实可以了。为什么在DEFINE_TRANSIENT_PROFILE该宏的括号中在z_omiga后加个“_r”就可以了?是因为和代码中的z_omiga区别了还是什么?
2013年12月3日
评论 点赞
csuperfect

给你改好了,自己试试看吧!
2013年12月3日
评论 点赞
liangchen0604

头文件是不是也不够。
2013年12月3日
评论 点赞
haohao549
在 if(time<=1/2*T0)前加上 real i语句后,导入Fluent中还是显示for那一行错误。
i 变量应该怎么说明呢?
2013年12月3日
评论 点赞
haohao549

在 if(time<=1/2*T0)前加上 real i语句后,导入Fluent中还是显示for那一行错误。
2013年12月3日
评论 点赞
csuperfect

就是里头的i变量未说明。
看着程序整体没什么问题!
2013年12月3日
评论 点赞
liangchen0604

i没有定义。
2013年12月2日
评论 点赞

没解决?试试专家一对一服务

换一批
    App下载
    技术邻APP
    工程师必备
    • 项目客服
    • 培训客服
    • 平台客服

    TOP