加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

OpenFoam 分块计算

(2011-07-02 12:54:01)
标签:

openfoam

杂谈

分类: OpenFoam

刚学OpenFoam,这个方法姑且认为是OpenFoam的并行计算吧!

通过decomposePar对网格进行划分,再通过mpirun -np solver -parallel进行计算,最后通过reconstructPar对分块结果合并。

使用方法及说明:

1. blockMesh

2. 对网格的边界等条件进行重新定义操作(可选)

3. 复制 /run/tutorials/multiphase/interFoam/laminar/damBreak/system下的decomposeParDict到你的case的system中。

文件代码:



FoamFile
{
    version         2.0;
    format          ascii;

    root            "";
    case            "";
    instance        "";
    local           "";

    class           dictionary;
    object          decomposeParDict;
}

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //


numberOfSubdomains 4                 //处理器个数,区块数

method          simple;                //分块方法:

                                                     //simple;hierarchical;scotch;metis;manual;

                                                     //scotch: 不需要用户定义几何,并试图减少处理器间的边界。用户可以通过ProcessorWeights关键词,指定处理器间的权重分配。另外还有其他更复杂的分解方法,参见源码:$FOAM_SRC/decompositionMethods/decompositionMethods/scotchDecomp/scotchDecomp.C

simpleCoeffs
{
                 (2 2 1)          //按照xyz方向对分块个数进行设定
    delta           0.001        //Cell skew factor
}

hierarchicalCoeffs
{
                 (1 1 1)          //对各个方向的分块数进行设定,与simple基本相同

                                             //但可以指定由那个方向先分块,如从y轴再到x轴
    delta           0.001;
    order           xyz;             //xyz/xzy/yxz...
}

metisCoeffs
{
    processorWeights                    //对各个处理器分配比重设定
    (
        1
        1
        1
    );
}

manualCoeffs                           //人工手动分配
{
    dataFile        "";
}

distributed     no;                    //分散后数据的分配到不同磁盘

roots          
(
);


// ************************************************************************* //
 

4. decomposePar (-force)

说明:执行分块,产生processor0, processor1,...文件夹

5. mpirun -np 4 interFoam -parallel

说明:运行计算,

6. reconstructPar

说明:合并各个Processor的计算结果

 

其他说明:

1. 显示残差:pyFoamPlotRunner.py --clear mpirun -np 4 icoFoam -parallel -case cavity

2. 边界定义要一致,像combustion/dieselFoam/aachenBomb/0中的ft,fu定义的fixedWalls在mesh里面没有定义,再执行decomposePar时就会报错。把这两个文件删掉或者改fixedWalls为walls就可以顺利分块。至于ft,fu在计算中是那个参数,我还没有去查看,有算过的同志可以告诉下。


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有