qiufeng313 发表于 2007-1-23 14:42

问了很多人,实在不知错在哪??

我编了一空气密度随压力和温度变化的UDF:
#include "udf.h"
DEFINE_PROPERTY(cell_disity, cell, thread)
{
real y,a,b,c,d,h,g,z, disity;
real temp= C_T(cell,thread);
real      p=C_P(cell,thread);
      d=396306.77*(1+0.707979*(1-sqrt(temp/304.13)))*(1+0.707979*(1-sqrt(temp/304.13)));
      a=26.667-8.314*temp/p,b=-(2133.39+443.42*temp/p-d/p),c=18963.68+5912.326*temp/p-26.667*d/p;
       h=sqrt(12*b*b*b-3*b*b*a*a-54*b*a*c+81*c*c+12*c*a*a*a);
       g=36*b*a-108*c-8*a*a*a;
       z=pow((g+12*h),1.0/3);
       y=1.0/6*z-6*(1.0/3*b-1.0/9*a*a)/z-1.0/3*a;
       disity=1000*44.0/y;
   
      return disity;
}
中间部分只是定义常数,我只调用了 C_T(cell,thread)和C_P(cell,thread),编译时是没有错误的,但初始化时出现如下错误:
Error:
FLUENT received fatal signal (ACCESS_VIOLATION)
1. Note exact events leading to error.
2. Save case/data under new name.
3. Exit program and restart to continue.
4. Report error to your distributor.
Error Object: ()
如果我不调用那两个函数,那初始化时就没有错误,真不知错在哪里了,问了好多人,那两个函数在这不能用吗?还是有什么条件?????

chaobo1982 发表于 2007-1-23 16:54

C_T(cell,thread)和C_P(cell,thread)是不是要进行循环才行哦

[ 本帖最后由 chaobo1982 于 2007-1-23 16:55 编辑 ]

qiufeng313 发表于 2007-1-23 17:54

不用吧,我看帮助第十章上有例子,也没有循环啊?
/*********************************************************************/
/* UDF for specifying a temperature-dependent viscosity property   */
/*********************************************************************/

#include "udf.h"

DEFINE_PROPERTY(cell_viscosity, cell, thread)
{
real mu_lam;
real temp = C_T(cell, thread);

if (temp > 288.)
    mu_lam = 5.5e-3;
else if (temp > 286.)
    mu_lam = 143.2135 - 0.49725 * temp;
else
    mu_lam = 1.;

return mu_lam;
}

[ 本帖最后由 qiufeng313 于 2007-1-23 17:56 编辑 ]

chaobo1982 发表于 2007-1-23 18:07

有没有可能是你的压力在什么地方为零了

qiufeng313 发表于 2007-1-23 19:14

应该没有啊,我画的是一直管,很短,入口8MPa,出口9MPa,中间怎么可能为0啊!

chaobo1982 发表于 2007-1-23 19:56

你初始化的压力有没有可能为0呢

qiufeng313 发表于 2007-1-23 20:19

没有啊,一初始化就出现那个错误了,而且压力也不为0!

qiufeng313 发表于 2007-1-24 10:28

是不是可以添加调试信息,看看程序算出来的温度和压力值啊,既然可以编译???但是我不知道在哪添加???
页: [1]
查看完整版本: 问了很多人,实在不知错在哪??