找回密码
 注册
查看: 1233|回复: 0

UDF代码求助指出问题,谢谢!

[复制链接]
发表于 2013-9-14 15:38:22 | 显示全部楼层 |阅读模式

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

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

x
模拟一个管状流道,内部流体1500K,壁面在升温到800K的时候即对内部流体进行加质,下面是我的代码,但是如果将流道入口的流体温度设置高于800K后,刚开始就迭代出错,显示divergence detected in AMG solver:temperature。如果将入口流体温度设置低于800K,则迭代正常,但是显然无法升温到800K,UDF也就不起作用了。请问各位,这是什么原因造成的?
谢谢。
#include "udf.h"

real a=0.0001;                                                
real n=0.33;
real rho=1735;
real cp=1600;
real T=3000;
real rho_rhog=1.4458;
real D=0.05;
real Vf=4000;

DEFINE_SOURCE(mass_source,cell, thread, dS, eqn)  /*定义质量源项*/
{
real tempm=C_T(cell,thread);                                 /* 获取单元温度*/
real presm=C_P(cell,thread);                                 /* 获取单元压力*/
real source_mass;
real t=CURRENT_TIME;
if(tempm>800.0)                                              /*若温度高于800K*/
  {
  source_mass=rho*a*pow(presm,n)*3.14*D*Vf*t*t;
  dS[eqn]=0;
  }
else
  {
  source_mass=dS[eqn]=0.0;
  }
return source_mass;
}

DEFINE_SOURCE(energy_source,cell, thread, dS, eqn)            /*定义能量源项*/
{
real tempe=C_T(cell,thread);                              /* 获取单元温度*/
real prese=C_P(cell,thread);                              /* 获取单元压力*/
real source_energy;
real t=CURRENT_TIME;
real A=3.14*D*Vf*t*t;
if(tempe>800.0)                                           /*若温度高于800K*/
  {
  source_energy=rho*a*pow(prese,n)*A*cp*T;
  dS[eqn]=0;
  }  
else
  {
   source_energy=dS[eqn]=0.0;
  }
return source_energy;
}

DEFINE_SOURCE(ymom_source,cell, thread, dS, eqn)             /*定义动量源项*/
{
real tempy=C_T(cell,thread);                             /* 获取单元温度*/
real presy=C_P(cell,thread);                             /* 获取单元压力*/
real source_ymom;
real t=CURRENT_TIME;
real A=3.14*D*Vf*t*t;
if(tempy>800.0)                                          /*若温度高于800K*/
  {
  source_ymom=-rho*a*pow(presy,n)*a*pow(presy,n)*A*rho_rhog;
  dS[eqn]=0;   
  }
else
  {
  source_ymom=dS[eqn]=0.0;
   }
return source_ymom;
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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