OpenFOAM 并行 reconstructPar

使用特殊技巧并行化 reconstructPar OpenFOAM 结果

通过参悟 OpenFOAM 中的并行编译方法:

wmake -j 8

我们实现了并行化的 reconstructPar

timeList=`foamListTimes -processor`
for time in $timeList; do
nCores=6
joblist=($(jobs -p))
while (( ${#joblist[*]} >= "$nCores" ))
do
# When the job limit is reached wait for a job to finish
wait -n
joblist=($(jobs -p))
done
reconstructPar -time $time >log.$time&
done

上述代码即可实现 6 个核同时 reconstructPar

如果你使用了 collated fileHandler,官方的 foamListTimes 只有更新到了这个才支持:commit a7f185eec200791fc0bd9fa7f0b60bce90c1f3ef in OpenFOAM-dev。
目前的 OpenFOAM-8 尚不支持。
为了在低版本 OpenFOAM 中使用,我把它放在了 GitHub 上:ZYfoamListTimes,可以自行下载编译,也欢迎点赞关注加收藏。


之前还尝试了另一种方法,也记录在下面:

thread_num=6  # 定义最大线程数

tmp_fifofile="./$$.fifo"
mkfifo $tmp_fifofile
exec 6<>$tmp_fifofile
rm $tmp_fifofile

for ((i=0;i<${thread_num};i++));do
echo
done >&6


timeList=`foamListTimes`
for time in $timeList; do
read -u6
{
reconstructPar -time $time
echo >&6
} &
done

wait

exec 6>&-
文章作者: Yan Zhang
文章链接: https://openfoam.top/parallellyReconstructPar/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 OpenFOAM 成长之路
您的肯定会给我更大动力~