热动菜鸟 发表于 2007-4-28 14:09

我的速度udf

我定义了一个速度入口,但老实显示是floating point error:invalid number。如果把数据类型改成int就可以了,但是没结果了又!求版主和各位高手帮忙!谢谢~~~~~~~~~

hyacinth 发表于 2007-4-28 15:32

请把问题描述清楚一点

这个问题一般可以通过调整松弛因子解决

当然也可能是你的边界或网格划分有问题

热动菜鸟 发表于 2007-4-28 18:30

/********************************/
/*inlet.c*/
/********************************/
#include "udf.h"
DEFINE_PROFILE(inlet_y_velocity,thread,position)
{
float r;
float z;
face_t f;
begin_f_loop(f,thread)
   {
   F_CENTROID(r,f,thread);
   z=r;
   if(z<10) F_PROFILE(f,thread,position)=0.1z;
   else F_PROFILE(f,thread,position)=3.8*pow(z/10,0.2);
   }
end_f_loop(f,thread)
}

这是我的程序,一开始计算就出现如下错误:floating point error:invalid number但把float改成int就可以计算了,结果却不连续了!请问这是怎么回事?谢谢版主和各位高手!

热动菜鸟 发表于 2007-4-28 18:31

主要是要计算速度进口!呈指数分布!谢谢hyacinth

热动菜鸟 发表于 2007-5-1 11:20

请教hyacinth版主,我这个是怎么回事啊?我就是要定义V=3.8×(Z/10)*0.20(0.20为指数)其中z为高度,v为y方向速度!谢谢版主!

Frank 发表于 2007-5-1 19:19

F_PROFILE(f,thread,position)=0.1z;

这里的0.1z明显不对,另外参考http://forum.vibunion.com/forum/thread-39934-1-1.html

热动菜鸟 发表于 2007-5-3 17:11

/********************************/
/*inlet.c*/
/********************************/
#include "udf.h"
DEFINE_PROFILE(inlet_y_velocity,thread,position)
{
real r;
real z;
face_t f;
begin_f_loop(f,thread)
   {
   F_CENTROID(r,f,thread);
   z=r;
   F_PROFILE(f,thread,position)=3.8*pow((z/10.),0.2);
   }
end_f_loop(f,thread)
}
这是我又试的程序!好像涉及到double的都是同样的错误!我用sqrt也是同样的错误!
页: [1]
查看完整版本: 我的速度udf