OpenFOAM 并行计算
现在,大多数研究生使用的工作电脑或笔记本都是多核多线程的 CPU,在 OpenFOAM 中使用并行计算也非常方便。
Step 1: 拷贝一个网格分割文件到你的工作文件夹:
$ cp $FOAMRUN/tutorials/multiphase/interFoam/laminar/damBreak/system/decomposeParDict ./system/
Step 2: 根据你的 CPU 和网格的情况进行分割,需要留出一部分 CPU 资源进行系统处理或其他工作。各区块网格数尽量平均化。
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
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: 执行分块操作
$ decomposePar
Step 4: 进行多核并行计算,将 yourFoamExe 替换成需要的求解器
$ mpirun -np 4 yourFoamExe -parallel
Step 5: 重组计算数据以便进行后处理
$ reconstructPar
Step 6: 利用 paraView 进行后处理
$ paraFoam
References
1 OpenFOAM 并行计算. retrived on 2018-04-30
- Log in to post comments