|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
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;
} |
|