| 查看: 1004 | 回复: 2 | ||
[求助]
二维水槽造波单机多核并行计算,udf该如何修改
|
|
问题1:我模拟了一个二维水槽,只加了一个消波的udf。串行的时候计算正常,改成并行后,计算提示Global courant number超过250。但在相同情况下把并行的时间步调小,也可以计算。我想确认一下,这问题是因为我的udf没有改成并行造成的计算误差较大呢?还是仅仅是参数设置问题? 问题2:如果是udf未改并行的问题,那么我的udf应该怎么修改呢?网上说是“在每段程序 最前头加上 #if !RP_HOST 最末尾加上#endif 即可”,具体应该怎么操作呢? 下面有计算提示的Global courant number超过250,以及消波程序,谢谢啦 #include "udf.h" #define PI 3.1415926 #define G 9.81 #define D 5 #define H 1 #define T 4 #define L 23 #define FL 90 //xiaobo// // x direction momentum // DEFINE_SOURCE(x_mom_source,c,t,dS,eqn) { real x[ND_ND]; real x_source; real y; real xishu; real time = RP_Get_Real("flow-time" ;y=x[1]; C_CENTROID(x,c,t); if(x[0]>=FL-L && x[0] <=FL) { if(y>=D-H && y <=D) { xishu=8*(x[0]-(FL-L))/L; x_source=-C_U(c,t)*998.2*xishu; dS[eqn]=-998.2*xishu; } else x_source=0; } else x_source=0; return x_source; } // y direction momentum // DEFINE_SOURCE(y_mom_source,c,t,dS,eqn) { real x[ND_ND]; real y_source; real y; real xishu; real time =RP_Get_Real("flow-time" ;y=x[1]; C_CENTROID(x,c,t); if(x[0]>=FL-L && x[0] <=FL) { if(y >= D-H && y <=D) { xishu=8*(x[0]-(FL-L))/L; y_source=-C_V(c,t)*998.2*xishu; dS[eqn]=-998.2*xishu; } else y_source=0; } else y_source=0; return y_source; } |
» 猜你喜欢
体制内长辈说体制内绝大部分一辈子在底层,如同你们一样大部分普通教师忙且收入低
已经有18人回复
面上可以超过30页吧?
已经有7人回复
网上报道青年教师午睡中猝死、熬夜猝死的越来越多,主要哪些原因引起的?
已经有5人回复
“人文社科而论,许多学术研究还没有达到民国时期的水平”
已经有6人回复
版面费该交吗
已经有13人回复
为什么中国大学工科教授们水了那么多所谓的顶会顶刊,但还是做不出宇树机器人?
已经有10人回复
什么是人一生最重要的?
已经有4人回复
2楼2017-11-20 00:50:34
3楼2021-12-23 19:29:50













;
回复此楼