24小时热门版块排行榜    

查看: 2120  |  回复: 8

manariel

银虫 (小有名气)

[求助] udf实现出口值赋给另一管入口

DEFINE_PROFILE(Jz34_k,thread,i)
{
Thread *thread_out;         
face_t face;
int ID_out=347;    //对管1出口id赋值
Domain *domain;

domain=Get_Domain(1);  
thread_out=Lookup_Thread(domain,ID_out);//找到管1出口的thread
                                      
begin_f_loop(face,thread)
{
   begin_f_loop(face,thread_out)
   {
    F_PROFILE(face,thread,i) =F_K(face, thread_out);
   }
   end_f_loop(face,thread_out)
}




程序最后的循环嵌套中,内部的循环是否可以去掉,直接写成:

begin_f_loop(face,thread)
{
F_PROFILE(face,thread,i) =F_K(face, thread_out);
}
end_f_loop(face,thread)
能否实现目的?
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

kylafree

至尊木虫 (知名作家)

【答案】应助回帖


感谢参与,应助指数 +1
xiegangmai(金币+1): 谢谢参与! 2012-03-10 20:16:42
你上面那个写法是错误的,连编译都通不过,你没试着编译一下吗?
2楼2012-03-10 14:08:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jesseliuxl

金虫 (小有名气)


xiegangmai(金币+1): 谢谢参与! 2012-03-10 20:16:48
那个begin_f_loop肯定多一个嘛
生命不息折腾不止
3楼2012-03-10 14:16:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

47425804

木虫 (正式写手)


★ ★
xiegangmai(金币+2): 鼓励讨论交流! 2012-03-11 10:24:06
除了楼上两位说的问题外,我觉得还有点问题,供参考。
face变量同时用在了出口和入口,如果实际上出口和入口的网格情况完全一致,那还是可以的。
但是,如果出口网格的编号方向和入口网格的编号方向刚好是相反的,那就有问题了。比方说出口编号为1的face本来应该对应入口编号为10的face,可是楼主这样的写法,出口的1号face还是指向了入口的1号face,就刚好头脚颠倒了。
又或者,入口有10个face,出口却只有9个face,那这样必然就少了一个对不上,计算要报错。
楼主并没有给出具体的网格情况,所以我只是猜测,可能以上问题其实都不是问题。
最稳妥的方法是,采用UDM的方法将出口face和入口face手动对应起来,当然程序的实现就要复杂很多了。
4楼2012-03-10 22:18:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

manariel

银虫 (小有名气)

引用回帖:
: Originally posted by 47425804 at 2012-03-10 22:18:47:
除了楼上两位说的问题外,我觉得还有点问题,供参考。
face变量同时用在了出口和入口,如果实际上出口和入口的网格情况完全一致,那还是可以的。
但是,如果出口网格的编号方向和入口网格的编号方向刚好是相反的 ...

这是圆管内的流动模拟,我画网格时将上下面链接了,画完面网格后,然后用cooper方法画的体网格
5楼2012-03-12 09:05:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

manariel

银虫 (小有名气)

引用回帖:
: Originally posted by kylafree at 2012-03-10 14:08:02:
你上面那个写法是错误的,连编译都通不过,你没试着编译一下吗?

编译通过了呀!
6楼2012-03-12 09:09:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jesseliuxl

金虫 (小有名气)


xiegangmai(金币+1): 谢谢参与! 2012-03-13 21:34:25
xiegangmai: 编辑内容 2012-03-13 21:34
以前做的udf,出口值调节后赋给入口,可供参考下
CODE:
#include "udf.h"
#define INT_YI 0.03
#define UDF_FILENAME "udf_loc_velo"
real AVG_YI;


DEFINE_ADJUST(outlet_avg_yi, d)
{
FILE *fp;
real sum_yi_A=0.0;
real sum_yi=0.0;
int j=0;
face_t f;
Thread *thread_out=Lookup_Thread(d,4);
  begin_f_loop(f,thread_out)
{
  sum_yi_A+=F_YI(f,thread_out,0);
  j++;      
}
end_f_loop(f,thread_out)

  AVG_YI=sum_yi_A/j;
fp=fopen(UDF_FILENAME,"w");

fprintf(fp, "%f",sum_yi_A); /* write out kount to data file */
fprintf(fp, "%f",AVG_YI);
fprintf(fp, "%d",j);
fclose(fp);

printf("%f\n",sum_yi_A);/* write out kount to data file */
printf("%f\n",AVG_YI);
printf("%d\n",j);
}


DEFINE_PROFILE(inlet,thread_in,index)
{
    real inlet_yi=0.0;
    face_t inlet_face;
  
    real time=RP_Get_Real("flow-time");   
    begin_f_loop(inlet_face,thread_in)
    {
          if(time==0)
        {
         inlet_yi=INT_YI;
          F_PROFILE(inlet_face,thread_in,index)=inlet_yi;
        }
        
          else
        {
          inlet_yi=AVG_YI+0.2*0.5;
          F_PROFILE(inlet_face,thread_in,index)=inlet_yi;
        }
    }
        end_f_loop(inlet_face,thread_in)   

printf("%f\n",inlet_yi);                     
}

[ Last edited by xiegangmai on 2012-3-13 at 21:34 ]

» 本帖已获得的红花(最新10朵)

生命不息折腾不止
7楼2012-03-13 20:06:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

manariel

银虫 (小有名气)

送鲜花一朵
引用回帖:
: Originally posted by jesseliuxl at 2012-03-13 20:06:49:
以前做的udf,出口值调节后赋给入口,可供参考下

#include "udf.h"
#define INT_YI 0.03
#define UDF_FILENAME "udf_loc_velo"
real AVG_YI;


DEFINE_ADJUST(outlet_avg_yi, d)
{ ...

好感谢你!
8楼2012-03-13 21:35:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

唐门弟子

新虫 (初入文坛)

请问这是编译型的还是解释型的
9楼2014-04-04 20:50:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 manariel 的主题更新
信息提示
请填处理意见