|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
本人做了等离子体发生器的数值模拟,加了五个源项,还有3个uds,但我也不知道5个源项编的是否正确,目前结果计算出错了,只能迭代一步,之后就出现一下错误:
Error: Floating point error: invalid number
Error Object: ()
这个错误让我也不知道是边界条件的问题,还是udf的问题.
其中udf是这样的。
////////////////////////////////////////////轴向动量方程源项///////////////////////////////////
DEFINE_SOURCE(Axial_Momentum,c,t,dS,eqn)
{
Domain *domain;
//real amu0=1.2566E-6; //真空磁导率
//real pai=3.1415926;
real bcita; //磁场B
real source,jr;
domain=Get_Domain(1);
jr = -C_UDSI_DIFF(c,t,0)*C_UDSI_G(c,t,0)[1];
bcita=C_UDSI_G(c,t,2)[0]-C_UDSI_G(c,t,1)[1];
source = bcita*jr;
C_UDMI(c,t,0)=source;
return source;
}
////////////////////////////////////////////径向动量方程源项目/////////////////////////////////
DEFINE_SOURCE(Radial_Momentum,c,t,dS,eqn)
{
Domain *domain;
//real amu0=1.2566E-6; /* 真空磁导率 */
//real pai=3.1415926;
real bcita; /* 磁场B */
real source,jx;
domain=Get_Domain(1);
jx = -C_UDSI_DIFF(c,t,0)*C_UDSI_G(c,t,0)[0];
bcita=C_UDSI_G(c,t,2)[0]-C_UDSI_G(c,t,1)[1];
source = -bcita*jx;
C_UDMI(c,t,1)=source;
return source;
}
////////////////////////////////////////////能量方程源项///////////////////////////////////////
DEFINE_SOURCE(energy_source,c,t,dS,eqn)
{
Domain *domain;
real akb=1.381E-23;
real ec=1.602E-19;
real source2,source3,source;
real jx,jr,j;
domain=Get_Domain(1);
jx=-C_UDSI_DIFF(c,t,0)*C_UDSI_G(c,t,0)[0];
jr=-C_UDSI_DIFF(c,t,0)*C_UDSI_G(c,t,0)[1];
j=sqrt(jx*jx+jr*jr);
source2 = C_UDSI_DIFF(c,t,0)*NV_MAG2(C_UDSI_G(c,t,0));
source3 = 2.5*akb/ec*(jx*C_T_G(c,t)[0]+jr*C_T_G(c,t)[1]);
source = source2+source3;
C_UDMI(c,t,2) = source2;
C_UDMI(c,t,3) = source3;
C_UDMI(c,t,4) = source;
C_UDMI(c,t,5) = jx;
C_UDMI(c,t,6) = jr;
C_UDMI(c,t,7) = j;
return source;
}
///////////////////////////////////////////
DEFINE_SOURCE(scalar1_source,c,t,dS,eqn)
{
real jx,source;
real amu0=1.2566E-6;
jx=-C_UDSI_G(c,t,0)[0]*C_UDSI_DIFF(c,t,0);
source = amu0*jx;
C_UDMI(c,t,8)=source;
return source;
}
////////////////////////////////////////标量方程2源项/////////////////////////////////////////
DEFINE_SOURCE(scalar2_source,c,t,dS,eqn)
{
real jr,source;
real amu0=1.2566E-6;
jr=-C_UDSI_G(c,t,0)[1]*C_UDSI_DIFF(c,t,0);
source = amu0*jr;
C_UDMI(c,t,9)=source;
return source;
}
这里面的计算我认为没问题,可能有问题的我感觉在于get_domain这些项的使用
[ 本帖最后由 jony322 于 2013-5-29 22:06 编辑 ] |
|