| 查看: 963 | 回复: 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; } |
» 猜你喜欢
参与限项
已经有3人回复
假如你的研究生提出不合理要求
已经有7人回复
实验室接单子
已经有4人回复
全日制(定向)博士
已经有4人回复
对氯苯硼酸纯化
已经有3人回复
求助:我三月中下旬出站,青基依托单位怎么办?
已经有12人回复
不自信的我
已经有12人回复
所感
已经有4人回复
要不要辞职读博?
已经有7人回复
北核录用
已经有3人回复
2楼2017-11-20 00:50:34
3楼2021-12-23 19:29:50












;
回复此楼