找回密码
 注册
查看: 3509|回复: 1

请教加质边界源项UDF 内附程序

[复制链接]
发表于 2009-6-7 10:40:03 | 显示全部楼层 |阅读模式

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

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

x
请高手版主帮我看看,很急啊!新手,学了很久才到这步的。先谢谢了!

问题描述:非定常问题,高温气体从进口喷入流体域,通过对流、辐射,加热固体,当固体表面温度达到某值后,从固体表面析出气体,进入流体域。
想要的效果:应该是流固边界面上某点先到规定温度,然受先加质到流体域,其他的点逐个点燃加质。
我的udf思路:在流体域靠固体边界的一层网格做为单独的一个流体域,用UDF的源项法实现过程,我算了之后发现有个单元到达规定温度后,整个流体域都加质了,不是我要的效果。编程程序如下:
#include "udf.h"

real a=1.042;                                                
real ro=1.64;
real n=0.493;
real engy=90242.7;
real rs_rg=1.017352;

DEFINE_SOURCE(mass_source,cell, thread, dS, eqn)  /*定义质量源项*/
{
real tempm=C_T(cell,thread);                                 /* 获取单元温度*/
real presm=C_P(cell,thread);                                 /* 获取单元压力*/
real source_mass;
if(tempm>600.0)                                              /*若温度高于600K*/
  {
  source_mass=a*pow(presm/98100.0,n)*ro*10000.0;
  dS[eqn]=0;
  }
else
  dS[eqn]=source_mass=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;
if(tempe>600.0)                                           /*若温度高于600K*/
  {
  source_energy=a*pow(prese/98100.0,n)*ro*engy*300000.0;
  dS[eqn]=0;
  }  
else
  dS[eqn]=source_energy=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;
if(tempy>600.0)                                          /*若温度高于600K*/
  {
  source_ymom=-a*ro*pow(presy/98100.0,n)*a*pow(presy/98100.0,n)*rs_rg*10000.0;
  dS[eqn]=-a*a*ro*rs_rg*2*n*pow(presy/98100.0,2*n-1)/98100.0*10000.0;   
  }
else
  dS[eqn]=source_ymom=0.0;
return source_ymom;
}
发表于 2013-9-6 09:48:26 | 显示全部楼层

回复 1# owencaller 的帖子

你好,请问您解决这个问题了吗?如何解决的?谢谢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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