24小时热门版块排行榜    

CyRhmU.jpeg
查看: 3274  |  回复: 22

kylafree

至尊木虫 (知名作家)

引用回帖:
10楼: Originally posted by dhw0075 at 2012-04-02 16:40:21:
在单核求解器中编译UDF,保存dat和case,然后再用并行求解器打开就可以了。

祝福~

请教,你这个方法确实可行么?在哪里有详细讲解?如果可行的话,那FLUENT HELP上花那么大章节讲UDF的并行化到底为哪般?
11楼2012-04-02 17:22:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jesseliuxl

金虫 (小有名气)

jesseliuxl: 回帖置顶 2012-04-06 09:42:09
已经搞定啦,回头把并行的贴出来
生命不息折腾不止
12楼2012-04-06 09:42:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jesseliuxl

金虫 (小有名气)

★ ★
jesseliuxl: 回帖置顶 2012-04-06 09:45:48
xiegangmai: 金币+2, 鼓励分享解决经验,金币奖励! 2012-04-06 10:11:20
xiegangmai: 编辑内容 2012-04-06 10:11
并行的udf
CODE:
#include "udf.h"
#include "mem.h"  
#define q 989.57
#define film_out 72.59
#define cir_out 916.98

#define INT_YI 0.022
real AVG_YI=0.0;

DEFINE_ADJUST(out, d)
     {
      real sum_yi_A=0.0;
      real sum_flux_A=0.0;
      int j=0;

   #if !RP_HOST
      face_t f;
      Thread *thread_out;
   #endif
   #if !RP_HOST
      thread_out=Lookup_Thread(d,19);
   
      begin_f_loop(f,thread_out)
       if (PRINCIPAL_FACE_P(f,thread_out))
       {
         sum_yi_A+=F_YI(f,thread_out,0)*F_FLUX(f,thread_out);
         sum_flux_A+=F_FLUX(f,thread_out);      
       }
      end_f_loop(f,thread_out)
   #endif  
   
     #if RP_NODE
      sum_yi_A=PRF_GRSUM1(sum_yi_A);
      sum_flux_A=PRF_GRSUM1(sum_flux_A);
     #endif

      node_to_host_real_2(sum_yi_A,sum_flux_A);  

      AVG_YI=sum_yi_A/sum_flux_A;
}

DEFINE_PROFILE(in,thread_in,index)
   {
    real inlet_yi=0.0;
    face_t inlet_face;
    #if !RP_HOST
    real time=RP_Get_Real("flow-time");
  
    begin_f_loop(inlet_face,thread_in)
     if (PRINCIPAL_FACE_P(inlet_face,thread_in))  
       {
          if(time<9)
           {
             inlet_yi=INT_YI;
             F_PROFILE(inlet_face,thread_in,index)=inlet_yi;
           }
         
          else
           {
             inlet_yi=AVG_YI*cir_out/q+INT_YI;
             F_PROFILE(inlet_face,thread_in,index)=inlet_yi;
           }
        }
    end_f_loop(inlet_face,thread_in)   

    #endif
    }

[ Last edited by xiegangmai on 2012-4-6 at 10:11 ]
生命不息折腾不止
13楼2012-04-06 09:45:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

05103111

木虫 (职业作家)

恭喜,祝好
14楼2012-04-06 10:08:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yangji0060

铜虫 (小有名气)

引用回帖:
13楼: Originally posted by jesseliuxl at 2012-04-06 09:45:42:
并行的udf


#include "udf.h"
#include "mem.h"  
#define q 989.57
#define film_out 72.59
#define cir_out 916.98

#define INT_YI 0.022
real AVG_YI=0.0;

DEFINE_ADJUST( ...

楼主您好,我想问一下你这个程序用interpreted进行编译可以吗?我用的时候感觉message函数和node_to_host函数不能用啊,是不是只能用compile型的
空气动力学,德国博后
15楼2012-04-11 13:14:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jesseliuxl

金虫 (小有名气)

引用回帖:
15楼: Originally posted by yangji0060 at 2012-04-11 13:14:10:
楼主您好,我想问一下你这个程序用interpreted进行编译可以吗?我用的时候感觉message函数和node_to_host函数不能用啊,是不是只能用compile型的

用的是compile
生命不息折腾不止
16楼2012-04-11 22:43:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wz9533

木虫 (正式写手)

奇怪,按照楼上的方法,并行时重新编译下udf居然就可以运行了,估计是我写的udf没有涉及到并行部分
17楼2013-09-03 10:42:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ghl09013

铁虫 (小有名气)

引用回帖:
16楼: Originally posted by jesseliuxl at 2012-04-11 22:43:04
用的是compile...

你好,用fprintf写到文件中应该是在host节点还是非host节点内写呢?
18楼2014-10-16 09:16:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

烟雨笑清风

金虫 (小有名气)

引用回帖:
13楼: Originally posted by jesseliuxl at 2012-04-06 09:45:42
并行的udf


#include "udf.h"
#include "mem.h"  
#define q 989.57
#define film_out 72.59
#define cir_out 916.98

#define INT_YI 0.022
real AVG_YI=0.0;

DEFINE_ADJUST(out, d)
     {
      ...

你好,我是刚接触并行,我想知道UDF并行和单机多核并行有啥区别?可以给我解答一下吗?谢谢你
爱拼才会赢
19楼2015-01-07 19:26:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yp1990

铜虫 (初入文坛)

引用回帖:
13楼: Originally posted by jesseliuxl at 2012-04-06 09:45:42
并行的udf


#include "udf.h"
#include "mem.h"  
#define q 989.57
#define film_out 72.59
#define cir_out 916.98

#define INT_YI 0.022
real AVG_YI=0.0;

DEFINE_ADJUST(out, d)
     {
      ...

你好,我按照你的模型也修改了我的udf,但是单机多核并行的时候还是出错,不知道怎么回事?
爱拼才会赢
20楼2015-05-03 21:51:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 jesseliuxl 的主题更新
信息提示
请填处理意见