现在,大多数研究生使用的工作电脑或笔记本都是多核多线程的CPU,在 OpenFOAM 中使用并行计算也非常方便。
Step 1: Copy a decomposeParDict file to your case/system folder.
cp $FOAMRUN/tutorials/multiphase/interFoam/laminar/damBreak/system/decomposeParDict ./system/
Step 2: edit the decomposeParDict file
FoamFile
{
version 2.0;
format ascii;
root "";
case "";
instance "";
local "";
class dictionary;
object decomposeParDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
numberOfSubdomains 4; //需要使用的处理器个数或分区块数
method simple; //分块方法:
//simple;hierarchical;scotch;metis;manual;
simpleCoeffs
{
n (2 2 1); //按照 (x y z) 方向对分块个数进行设定
delta 0.001; //Cell skew factor
}
hierarchicalCoeffs
{
n (1 1 1); //对各个方向的分块数进行设定,与simple基本相同
//但可以指定由那个方向先分块,如从y轴再到x轴
delta 0.001;
order xyz; //xyz/xzy/yxz...
}
metisCoeffs
{
processorWeights //对各个处理器分配比重设定
(
1
1
1
);
}
manualCoeffs //人工手动分配
{
dataFile "";
}
distributed no; //分散后数据的分配到不同磁盘
roots
(
);
// ************************************************************************* //
Step 3: execute decomposition 执行分块
decomposePar
Step 4: run on multi-core 多核并行计算
mpirun -np 4 yourFoamExe -parallel
yourFoamExe 指用来计算你的 case 的可执行文件/程序
simple: 按照 simpleCoeffs 指定的方向和个数均匀分块。simpleCoeffs 设置示例:在 x 方向平均分成 4 块,n 设为 (4 1 1). 分成 8 块, x 方向 4 块,y 方向 2 块, n 则设为 (4 2 1).