| 查看: 1162 | 回复: 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; } |
» 猜你喜欢
如果此刻你正在为国基感到焦虑,不妨来听听这首《基金之外》
已经有7人回复
没有任何消息-是不是就凉了
已经有8人回复
售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急
已经有3人回复
售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急
已经有5人回复
人气不行了
已经有10人回复
我面上完蛋了
已经有10人回复
能否退出参与的面上项目解除限项
已经有24人回复
filecode,4个jtjc了
已经有17人回复
2026国自然函评费到账
已经有19人回复
建议基金发布提前给出明确的时间点
已经有16人回复
2楼2017-11-20 00:50:34
3楼2021-12-23 19:29:50









;
回复此楼
20