OpenFOAM 并行计算

现在,大多数研究生使用的工作电脑或笔记本都是多核多线程的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).

   Send article as PDF   

Leave a Reply

Your email address will not be published. Required fields are marked *

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.