24小时热门版块排行榜    

查看: 2975  |  回复: 10

pancard

铁虫 (小有名气)

[求助] VOF体积分数的梯度为什么为0呢??

分别使用如下两个UDF计算VOF中体积分数的梯度,两只情况下梯度值都是0?
请高手指教,UDF是否有什么问题?
cas文件及UDF在附件中。
UDF2:

#include "udf.h"  

DEFINE_ON_DEMAND(on_demand_calc)
{
   Domain *subdomain;
   /* declare domain pointer since it is not passed as an argument to the DEFINE macro  */
   Thread *cell_thread;
   cell_t cell;
   float a1,a2,x[2];
   subdomain=Get_Domain(2);   /* returns phase with ID=2 domain pointer£¬meanning primary phase*/
   /* Loop over all cell threads in the domain */
   thread_loop_c(cell_thread,subdomain)
   {
     /* Loop over all cells  */
     begin_c_loop(cell,cell_thread)
       {
        C_UDSI(cell,cell_thread,0)=C_VOF(cell,cell_thread);
                }
     end_c_loop(cell,cell_thread)
         begin_c_loop(cell,cell_thread)
       {
        C_CENTROID(x,cell,cell_thread);
                C_UDMI(cell,cell_thread,0)=NV_MAG(C_UDSI_G(cell,cell_thread,0));
                a1=C_VOF(cell,cell_thread);
                a2=C_UDMI(cell,cell_thread,0);
                printf("location:%f,%f,vof:%f,gradient:%f\n",x[0],x[1],a1,a2);      
       }
     end_c_loop(cell,cell_thread)
    }
}

      
UDF3:
#include "udf.h"
DEFINE_ON_DEMAND(grad)
{
  Domain *mixture_domain, *sub_domain;
  Thread *cell_thread;
  cell_t cell;
  int phase_domain_index;
  float a1,a2,x[2];
  mixture_domain=Get_Domain(1);
  
   sub_domain_loop(sub_domain,mixture_domain,phase_domain_index)
  {
     /* loop if primary phase  */
    /* if (DOMAIN_ID(sub_domain) == 2)     */  

     /* loop over all cell threads in the primary phase domain  */
     thread_loop_c(cell_thread,sub_domain)
     {
         /* loop over all cells in primary phase cell threads  */
         begin_c_loop_all(cell,cell_thread)
         {
          C_CENTROID(x,cell,cell_thread);
                  C_UDSI(cell,cell_thread,0)=C_VOF(cell,cell_thread);
                  C_UDMI(cell,cell_thread,0)=NV_MAG(C_UDSI_G(cell,cell_thread,0));
                  a1=C_VOF(cell,cell_thread);
                  a2=C_UDMI(cell,cell_thread,0);
                  printf("location:%f,%f,vof:%f,gradient:%f\n",x[0],x[1],a1,a2);            
         }
         end_c_loop_all(cell,cell_thread)
     }

   }
}
水-空气相分布
回复此楼

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : FLUENTWORK.rar
  • 2012-06-06 21:35:30, 35.79 K

» 收录本帖的淘帖专辑推荐

udf相关 传热传质

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

欢迎电磁仿真、焊接、快速成型的朋友们来交流
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

gyctju

金虫 (正式写手)


臭水沟: 金币+1, 谢谢交流~~ 2012-06-07 19:22:06
看得出楼主的意图是用C_UDSI_G来求vof的梯度,用define_on_demand是用来做后处理吧,如果是,建议用tec来做
2楼2012-06-07 10:05:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

pancard

铁虫 (小有名气)

自己顶
欢迎电磁仿真、焊接、快速成型的朋友们来交流
3楼2012-06-07 14:55:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

pancard

铁虫 (小有名气)

引用回帖:
2楼: Originally posted by gyctju at 2012-06-07 10:05:06
看得出楼主的意图是用C_UDSI_G来求vof的梯度,用define_on_demand是用来做后处理吧,如果是,建议用tec来做

并不是用来作后处理,主要是define_on_demand调用方便,用来调试啊。
欢迎电磁仿真、焊接、快速成型的朋友们来交流
4楼2012-06-07 14:56:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

pancard

铁虫 (小有名气)

再顶起:
读了两年博,发现中国学术不行的最重要一点就是:导师不搞学术。
理由有:
1 学术不能全靠博士,学生是流水的兵,不会形成有效的积累;
2 没有积累,新来的博士都是从0开始,没有“巨人的肩膀”可站;
3 导师不搞学术,导师学术水平下降,从而导致外行(导师)领导内行(博士),瞎指挥。
欢迎电磁仿真、焊接、快速成型的朋友们来交流
5楼2012-06-07 16:19:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

pancard

铁虫 (小有名气)

发错地了,
欢迎电磁仿真、焊接、快速成型的朋友们来交流
6楼2012-06-07 16:20:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zlx198200

新虫 (小有名气)

【答案】应助回帖


感谢参与,应助指数 +1
xiegangmai: 金币+1, 谢谢参与! 2012-06-07 23:39:56
你网格也太粗了吧,界面这么不清晰,头文件加了么?
类似sg_mphase.h
7楼2012-06-07 21:55:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zlx198200

新虫 (小有名气)

【答案】应助回帖

★ ★
xiegangmai: 金币+2, 谢谢参与! 2012-06-07 23:40:12
#define BOUNDARY_ID_fluid 2 /*全局变量,对整个流体区域*/  


/*************/  
DEFINE_ON_DEMAND(on_demand_calc)
{
   Domain *subdomain;
    Thread *t;
   cell_t c;
   float a1,a2,x[ND_ND],xx,yy;
   FILE *fpc;

  domain=Get_Domain(1); /*基本相是不是默认1*/
      t=Lookup_Thread(domain,2)  /*混合相指针*/
          t1=THREAD_SUB_THREAD(t,0); /*一相*/
     t2=THREAD_SUB_THREAD(t,1);/*另一项*/

      /* Loop over all cell threads in the domain */
   thread_loop_c(c,t)
   {
           C_CENTROID(x,c,t);
       xx=x[0];
           yy=x[1];

      C_UDSI(c,t,0)=C_VOF(c,t);
          C_UDMI(c,t,0)=NV_MAG(C_UDSI_G(c,t,0));
      a1=C_UDSI(c,t,0);

     fpc=fopen("gradient.txt","a";
         fprinth(fpc,"%f          %f          %f\n", xx,yy,a1);
         fclose(fpc);
   }
   end_c_loop(c,t)
8楼2012-06-07 22:29:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zlx198200

新虫 (小有名气)


xiegangmai: 金币+1, 谢谢参与! 2012-06-07 23:40:21
头文件还有好几个,你自己看看帮助吧,你这个UDF我觉得自己都没写清楚,SUB,SUPER这些不要瞎用,
9楼2012-06-07 22:31:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

pancard

铁虫 (小有名气)

自己解决了,过程很复杂,详见
http://wenku.baidu.com/view/1018444f581b6bd97e19ea3c.html
欢迎电磁仿真、焊接、快速成型的朋友们来交流
10楼2014-04-24 21:01:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 pancard 的主题更新
信息提示
请填处理意见