OpenFOAM求解器植入自己的代码后并行计算问题
-
请问一下,OpenFOAM求解器植入自己的代码后还能并行计算吗,代码功能并不是CFD相关算法,具体来说应该是对求解器每个时间步计算得到数据的再次使用。
-
首先,谢谢老师回答,我们这个工作不能输出后再处理,涉及利用计算数据进行反演计算。第二,我不是很懂OpenFOAM的并行是什么原理,只是按照使用规则用过,加了自己的代码后再并行就崩了
-
OpenFOAM 并行和通常意义上的并行有点区别。一般并行的部分都是写在代码里的。OpenFOAM 的并行部分不在代码里,严格说,都不是并行的。并行的任务分配是通过 decomposePar 完成。并行计算是通过 runParallel 完成的。所谓并行就是一下开几个求解器进程,同时算不同的区域,几个求解器的计算区域的交接处信息交换也是 runParallel 完成的。
这样求解器中的变量就不能“特殊”,要“通识”。不能直接“全场”信息,要用“我计算的所有网格”信息。
你的第一个帖子说要用每个时间步计算的到的数据,这个数据的调用直接写进求解器。那么在各个区域上计算的进程有的快,有的慢。全场的信息(或者说某个时间步计算的到的结果)对于单个进算进程来说是未知的。对于单个进程:我只计算左上角的区域,然后下一步计算需要引用全区域变量。
runParallel 应该是没有这样的调度的。进程有快慢,所以偶尔会互相等待。等待也是等待交界面的信息。而这个全场信息是等不来的,得合并各个进程的计算结果才有。
所以有些求解器它就是不能并行,施主又何必强求
2020年11月17日 08:50
4/4
2021年1月2日 02:58