不知火舞的被虐|伊人天伊人天天综合网|博洛尼亚天气|任你懆这里只有精品4|久久美日韩精品久久|掌中之物漫画免费阅读观看|0丨d老妇

Fluent 串行UDF改并行UDF? 100

瀏覽:4012 回答:3

串行可以計算,但是按照網上和幫助上改成并行的,結果并行計算和串行結果不一樣(可以肯定并行計算錯了),實在沒搞明白host和node該怎么設,有沒有大神指導一下改怎么改啊?UDF是求取特定體積的,涉及了循環,初步猜測是不同node的值沒有匯總,導致結果中時間列是對的,變量列是錯的....

#include "udf.h"

DEFINE_EXECUTE_AT_END(execute_at_end)

{

FILE *fp;

fp = fopen("vf.txt", "a");

real volume = 0.0;

real mass_fraction = 0.0;

real v = 0.0;

real vf = 0.0;

real flow_time = RP_Get_Real("flow-time");

int cold_index = 0;


#if !RP_HOST

Domain * d;

Thread * tc;

cell_t c;

d = Get_Domain(1);

#endif


#if !RP_HOST

thread_loop_c(tc, d)

{

begin_c_loop_int(c, tc)

{

mass_fraction = C_YI(c, tc, cold_index);

if (mass_fraction>0.13253545)

{

volume = C_VOLUME(c, tc);

v += volume;

}

}

vf = v * 100 / 0.01720534;

end_c_loop_int(c, tc)

}

#endif


#if !RP_HOST

fprintf(fp, "%f, %f \n", flow_time, vf);

fclose(fp);

#endif

}


邀請回答 我來回答

全部回答

(3)
默認 最新
NANK
fluent在并行計算時,整個計算網格會由主節點(host)分為若干個計算量相當的子區域,分配至各個計算結點(computer node)上。 host只存儲網格的分區信息,因而不能進行涉及單元循環的計算,而可以進行從computer node上返回值的相關計算以及其它C語言允許的計算; computer node則可以進行本節點上分配的區域內網格循環的相關計算。在將串行udf修改為并行的時,確定好哪些程序段是需要在host上編譯執行,哪些是需要在computer node上編譯執行,協調好兩者之間的數據傳遞即可, 具體參考Udf manual中的parallel considerations
2017年7月27日
已采納 評論 點贊
技術鄰問答
@EAC @NANK
2017年7月27日
評論 點贊
Samenov
在末尾加入v = PRF_GRSUM1(v)后,可以計算了,但是為什么并行和串行的結果,在小數數值上還有不同,UDF是不是還有問題?對于begin_c_loop_int 宏,在求取單元體積上時,只需要單元內部循環就可以了嗎?不需要把外部單元一起循環吧?
2017年7月26日
評論 點贊

沒解決?試試專家一對一服務

換一批
    App下載
    技術鄰APP
    工程師必備
    • 項目客服
    • 培訓客服
    • 平臺客服

    TOP