24小时热门版块排行榜    

查看: 1928  |  回复: 5
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

xuehu_syw

银虫 (小有名气)

[求助] UDF中的初始化宏 已有3人参与

目前遇到一个UDF初始化宏,其中的一些含义搞不清楚,希望有大神能帮个忙。
问题如下:
模型是一个二维竖直管道,想要在初始化的时候指定下面一段距离为气相,上面为液相。
代码如下:
DEFINE_INIT(my_init_function, domain)
{
  Thread *t;
  Thread **pt;
  Thread **st;
  cell_t c;
  Domain *pDomain = DOMAIN_SUB_DOMAIN(domain,P_PHASE);
  Domain *sDomain = DOMAIN_SUB_DOMAIN(domain,S_PHASE);
  
  real xc[ND_ND], y, x;

      mp_thread_loop_c (t,domain,pt)
        if (FLUID_THREAD_P(t))
          {
            Thread *tp = pt[P_PHASE];

            begin_c_loop (c,t)
              {
     C_CENTROID(xc,c,t);
     x=xc[0];
     y=xc[1];
     
      if ( y < 0.5)
      C_VOF(c,tp) = 0;
      else
      C_VOF(c,tp) = 1;

              }
          end_c_loop (c,t)
         }
         
               mp_thread_loop_c (t,domain,st)
        if (FLUID_THREAD_P(t))
          {
            Thread *sp = st[S_PHASE];

            begin_c_loop (c,t)
              {
     C_CENTROID(xc,c,t);
     x=xc[0];
     y=xc[1];
     
      if ( y < 0.5 )
      C_VOF(c,sp) = 1;
      else
      C_VOF(c,sp) = 0;

              }
          end_c_loop (c,t)
         }

}
现在不明白的是:
1.为什么要用两个
Domain *pDomain = DOMAIN_SUB_DOMAIN(domain,P_PHASE);
  Domain *sDomain = DOMAIN_SUB_DOMAIN(domain,S_PHASE);
2.以及问什么要用两个  mp_thread_loop_c循环
回复此楼

» 猜你喜欢

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

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hb_lqq1

铜虫 (初入文坛)

【答案】应助回帖

感谢参与,应助指数 +1
1、Domain *pDomain = DOMAIN_SUB_DOMAIN(domain,P_PHASE);
     Domain *sDomain = DOMAIN_SUB_DOMAIN(domain,S_PHASE);
下面的程序没有用到pDomain和 sDomain,看不出有无必要定义主相和次相的domain指针。

2、下面两个mp_thread_loop_c你的理解应该是正确的
   我觉得也没有必要写两个,直接合并成一个应该也可以
mp_thread_loop_c (t,domain,pt)
        if (FLUID_THREAD_P(t))
          {
            Thread *tp = pt[P_PHASE];
            Thread *sp = st[S_PHASE];

            begin_c_loop (c,t)
            {
      。。。。。
if ( y < 0.5 )
      C_VOF(c,sp) = 1;
      C_VOF(c,tp) = 0;
else
   。。。。。
            }
5楼2016-10-17 17:08:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 6 个回答

dai26520

专家顾问 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
patch不就可以了吗
个性只是一个代号,做好自己就行
2楼2016-10-16 16:06:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xuehu_syw

银虫 (小有名气)

引用回帖:
2楼: Originally posted by dai26520 at 2016-10-16 16:06:08
patch不就可以了吗

patch可以解决,但是想搞明白这个问题,而且如果是复杂的初始化问题的话,patch就解决不了了吧,还是得用初始化宏。
3楼2016-10-16 16:11:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xuehu_syw

银虫 (小有名气)

哦哦,我明白了。P_PHASE代表初相,S_PHASE代表次相,应该是固定用法。后面是对满足条件的气液相分别设置初始条件。欢迎大神指导交流~
4楼2016-10-16 21:26:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见