Error message

Deprecated function: The each() function is deprecated. This message will be suppressed on further calls in menu_set_active_trail() (line 2405 of /home/www/rheoworks/includes/menu.inc).

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