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

请教一个UDS导入UDF在FLUENT中设置的问题

[复制链接]
发表于 2012-3-22 11:21:17 | 显示全部楼层 |阅读模式

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

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

x
最近在模拟一个静电除尘器的颗粒轨迹问题,需要将UDF中的定义的UDS方程在FLUENT中进行设置,有现成的UDF程序,大概需要设置两个方程,泊松方程和电流连续性方程,具体见贴图。
下面是具体的UDF程序
DEFINE_UDS_FLUX(rho_flux,f,t,i)
{
  cell_t  c0,  c1 = -1;
  Thread *t0, *t1 = NULL;

  real NV_VEC(psi_vec), NV_VEC(A), flux = 0.0; /* declaring vectors psi and A  */

  real *grad_v, *grad_v1;
  real dens;

  c0 = F_C0(f,t);
  t0 = F_C0_THREAD(f,t);
  F_AREA(A, f, t);

  /* If face lies at domain boundary, use face values; */
  /* If face lies IN the domain, use average of adjacent cells. */

if (BOUNDARY_FACE_THREAD_P(t)) /*Most face values will be available*/
    {
      
      /* Depending on its BC, density may not be set on face thread*/
      if (NNULLP(THREAD_STORAGE(t,SV_DENSITY)))
        dens = F_R(f,t);   /* Set dens to face value if available */
      else
        dens = C_R(c0,t0); /* else, set dens to cell value */


      NV_DS(psi_vec,  =, C_UDSI_G(c0,t0,v)[0], C_UDSI_G(c0,t0,v)[1], 0, *, dens);

      flux = NV_DOT(psi_vec, A); /* flux through Face */
    }
  else
    {
      c1 = F_C1(f,t);       /* Get cell on other side of face */
      t1 = F_C1_THREAD(f,t);

        grad_v = C_UDSI_G(c0,t0,v);
        grad_v1 = C_UDSI_G(c1,t1,v);

      NV_DS(psi_vec,  =, grad_v[0],grad_v[1],0,*,C_R(c0,t0));
      NV_DS(psi_vec, +=, grad_v1[0],grad_v1[1],0,*,C_R(c1,t1));

      flux = NV_DOT(psi_vec, A)/2.0; /* Average flux through face */
    }

  /* Fluent will multiply the returned value by phi_f (the scalar's
     value at the face) to get the "complete'' advective term.  */

  return F_FLUX(f,t) / dens;
}
请高手看看,UDS具体在FLUENT中如何设置,是要设置几个UDS自定义标量,要一次性设置还是分两次设置。
UDS方程.jpg
 楼主| 发表于 2012-3-23 14:04:58 | 显示全部楼层
请懂的高手解答下吧,谢谢了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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