找回密码
 注册
查看: 2160|回复: 5

udf编译问题,附源程序

[复制链接]
发表于 2007-4-8 12:21:06 | 显示全部楼层 |阅读模式

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

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

x
[这个贴子最后由elfin在 2007/04/09 02:24pm 第 1 次编辑]

我想要做一个有分段温度边界的问题,在编好源程序连入fluent中编译时老是出错
cpp -IF:\paper\MYPROG~1\exam\exam3\fluent6.2\Fluent.Inc\fluent6.2.16/src -IF:\paper\MYPROG~1\exam\exam3\fluent6.2\Fluent.Inc\fluent6.2.16/cortex/src -IF:\paper\MYPROG~1\exam\exam3\fluent6.2\Fluent.Inc\fluent6.2.16/client/src -IF:\paper\MYPROG~1\exam\exa
3\fluent6.2\Fluent.Inc\fluent6.2.16/multiport/src -I. -DUDFCONFIG_H="<udfconfig.h>" F:\paper\my program\exam\exam3\libudf\src\piece-boundary.c
Error: F:\paper\my program\exam\exam3\libudf\src\piece-boundary.c: line 1: parse error.
不知是否我的源程序有问题了,c语言学得不好
源程序如下,请高手指点,万分感谢!
/*******************************************************************/
/* udfboundary.cpp */
/* udf程序,分段稳态线性温度边界条件 */
/*******************************************************************/
&#35;include "udf.h"
DEFINE_PROFILE(temp, thread, index)
{
real x[ND_ND];  /* 对应于位置矢量,real相当于double */
real y;
real temp=C_T(cell,thread)
face_t f;
begin_f_loop(f,thread) /* 对由thread传入的所有单元面循环 */
{
F_CENTROID(x,f,thread);
y = x[1];
     if(y<-2.2)
temp=1393.15;
     else if(y<1.8)
   temp=70*x/4.8;
else
   temp=1323.15;
return temp;
}
end_f_loop(f,thread)
}
[br][br][以下内容由 elfin 在 2007年04月09日 02:22pm 时添加] [br]
 楼主| 发表于 2007-4-9 14:19:10 | 显示全部楼层

udf编译问题,附源程序

问题跟踪: 请高手指点啊。bow!
简化程序如下:
/*******************************************************************/
/* udfboundary.cpp */
/* udf程序,线性温度边界条件 */
/*******************************************************************/
&#35;include "udf.h"
DEFINE_PROFILE(side_temp,thread,index)
{
real x[ND_ND];  /* 对应于位置矢量,real相当于double */
real y;
face_t f;
begin_f_loop(f,thread) /* 对由thread传入的所有单元面循环 */
{
  F_CENTROID(x,f,thread);
             y = x[1];
  F_PROFILE(f,thread,index)=70*(2.7-x)/(2.7+2.1)+1323.15
}
end_f_loop(f,thread)
}
装入fluent解释时还是出现如下问题:
cpp -IF:\paper\MYPROG~1\exam\exam3\fluent6.2\Fluent.Inc\fluent6.2.16/src -IF:\paper\MYPROG~1\exam\exam3\fluent6.2\Fluent.Inc\fluent6.2.16/cortex/src -IF:\paper\MYPROG~1\exam\exam3\fluent6.2\Fluent.Inc\fluent6.2.16/client/src -IF:\paper\MYPROG~1\exam\exa
3\fluent6.2\Fluent.Inc\fluent6.2.16/multiport/src -I. -DUDFCONFIG_H="<udfconfig.h>" udfboundary.c
Error: udfboundary.c: line 14: parse error.
___________________________________________________________________________
line 14指  y = x[1];

发表于 2007-4-11 20:13:41 | 显示全部楼层

udf编译问题,附源程序

第一个问题,你的real temp=C_T(cell,thread)是想获得什么温度?某个单元的温度?还是某个面上的平均温度?cell也没有定义呀?
第二个问题,y = x[1];   注意用英文状态书写符号,你用的是中文状态的分号。
 楼主| 发表于 2007-4-12 22:39:01 | 显示全部楼层

udf编译问题,附源程序

第一个问题,我是想设置一个区间段的温度,就是一个炉子中间段部分,这个应该是面的温度吧,我不太清楚要如何定义cell(还有thread之类的,我没有弄明白:()
第二个问题,我已经发现了,还是多谢!:)
发表于 2007-4-19 10:11:04 | 显示全部楼层

udf编译问题,附源程序

15行  F_PROFILE(f,thread,index)=70*(2.7-x)/(2.7+2.1)+1323.15;
x为数组,不可以这样加减,结尾加分号
 楼主| 发表于 2007-5-7 10:22:39 | 显示全部楼层

udf编译问题,附源程序

恩,那些问题都解决了。
编译都通过了。真的很感谢各位哦!
只是现在又有新问题了:(
我要的是从x轴方向开始结晶凝固的,可是我下面的程序得到的是从y轴方向开始结晶凝固的。变换x和y,或者变量改用r和z (因为那个是圆柱轴对称的,只取一个通过直径的截面的一半来计算),都是一样结果,不知道要怎么办了…
/*******************************************************************/
/* udfboundary.c */
/* udf程序,非稳态分段线性温度边界条件 */
/*******************************************************************/
&#35;include "udf.h"
DEFINE_PROFILE(unsteady_temperature, thread, position)
{
real y[ND_ND];  /* 对应于位置矢量,real相当于double */
real x;
real t=RP_Get_Real("flow-time");
face_t f;
begin_f_loop(f,thread) /* 对由thread传入的所有单元面循环 */
{
  
  F_CENTROID(y,f,thread);
  x= y[1];
  
  if (x+2.77e-07*t<1.)
         temp=1385.;
  else if(1.<x+2.77e-07*t<5.)
temp=40*(5.0-x)/(2.0+2.0)+1345;
  else
temp=1345.;
    }
end_f_loop(f,thread)
}

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

本版积分规则

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