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

求教有关udf的问题 如果用udf加入源项怎么才能知道自己加的是否合适

[复制链接]
发表于 2013-5-29 21:56:41 | 显示全部楼层 |阅读模式

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

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

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 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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