Skip to content
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
CFD中文网

CFD中文网

  1. CFD中文网
  2. OpenFOAM
  3. 并行计算结果与串行结果差异很大的问题

并行计算结果与串行结果差异很大的问题

已定时 已固定 已锁定 已移动 OpenFOAM
7 帖子 3 发布者 5.3k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • C 离线
    C 离线
    ChimneyFoam
    写于2020年6月28日 10:02 最后由 编辑
    #1

    问题

    之前用OpenFOAM分块并行计算,并没有注意结果是否有问题。但是最近用并行计算三维模拟的时候出现了很大的问题,这才回头看看二维的情况。发现二维的串行与并行结果差异也是巨大。模拟结果中这个上升的plume结构都不一样了,如果probe某个节点再对比二者的演化值,肯定也是没法接受。下面两个图是并行和串行在1000 year的结果。

    串行计算已经与别人的程序做过benchmark对比了,是完全没有问题的。这个并行与串行的差异问题希望有大佬分享一下经验,多谢!

    • 串行结果

    串行结果

    • 并行结果

    并行结果

    算例说明

    算例使用的求解器是自己写的见docker HydrothermalFoam。

    串行和并行的所有设置都是一样的,下面贴上并行参数设置字典

    FoamFile
    {
    version 2.0;
    format ascii;
    class dictionary;
    location "system";
    object decomposeParDict;
    }
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
    numberOfSubdomains 4;
    method scotch;
    simpleCoeffs
    {
    n (2 2 1);
    delta 0.001;
    }
    hierarchicalCoeffs
    {
    n (1 1 1);
    delta 0.001;
    order xyz;
    }
    manualCoeffs
    {
    dataFile "";
    }
    distributed no;
    roots ( );
    // ************************************************************************* //

    边界条件

    其中压力中的noFlux边界条件是自己定义的,其实与fixedFluxPressure边界条件(U==0)的情况是一样的。

    FoamFile
    {
    version 2.0;
    format ascii;
    class volScalarField;
    object T;
    }
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
    dimensions [0 0 0 1 0 0 0];
    internalField uniform 278.15; //278.15 K = 5 C
    boundaryField
    {
    top
    {
    type inletOutlet;
    phi phi;
    inletValue uniform 278.15;
    }
    bottom
    {
    type fixedValue;
    value uniform 773.15; //placeholder
    }
    sidewalls
    {
    type zeroGradient;
    }
    }
    // ************************************************************************* //
    FoamFile
    {
    version 2.0;
    format ascii;
    class volScalarField;
    object p;
    }
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
    dimensions [1 -1 -2 0 0 0 0];
    internalField uniform 250e5;
    boundaryField
    {
    top
    {
    type fixedValue;
    value uniform 250e5;
    }
    bottom
    {
    type noFlux;
    }
    sidewalls
    {
    type noFlux;
    }
    }
    1 条回复 最后回复
  • 李 在线
    李 在线
    李东岳 管理员
    写于2020年6月28日 10:25 最后由 编辑
    #2

    很难判断别人的代码问题在哪里。并行与串行的区别,如果差别明显,主要是由于processor边界造成的,你看你的求解器里面的processor边界是否合理

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    1 条回复 最后回复
  • C 离线
    C 离线
    ChimneyFoam
    写于2020年6月28日 10:36 最后由 编辑
    #3

    @东岳 我猜也是边界条件的问题,这个processor边界需要自己在求解器里面处理吗?我没有处理过这个,我看OF自带的求解器里面好像也没有做处理,比如buoyantPimpleFoam。东岳老师您可以稍微给我点这方面的例子或者资料吗?多谢多谢!

    1 条回复 最后回复
  • C 离线
    C 离线
    ChimneyFoam
    写于2020年6月28日 10:41 最后由 编辑
    #4

    @东岳
    processor BC

    这是不是就是问题的所在,这个procBoundary1to0和procBoundary0to1 的value是不是应该相等才对?

    1 条回复 最后回复
  • C 离线
    C 离线
    ChimneyFoam
    写于2020年6月28日 12:11 最后由 编辑
    #5

    检查了一下damBreak算例的并行,这个procBoundary1to0和procBoundary0to1 的value确实是不相等的,应该不是这个的问题。而且damBreak的并行和串行结果基本一致,说明肯定是我的solver或者边界条件的问题,可是我查了好久的资料都没有找到问题关键在哪。

    1 条回复 最后回复
  • 浪 离线
    浪 离线
    浪迹天大
    写于2020年6月28日 21:15 最后由 编辑
    #6

    最近帮一个同事解决了类似问题,因为他对一个默认边界条件(calculated)的volScalarField量进行了fvc::grad操作,一个解决办法是fvc::grad之前先对这个量执行一下correctBoundaryConditions()。希望可以给你一个参考。

    OpenFOAM 学习交流:https://openfoam.top

    1 条回复 最后回复
  • 李 在线
    李 在线
    李东岳 管理员
    写于2020年6月29日 00:41 最后由 编辑
    #7

    buoyantPimpleFoam大体上可以参考rhoPimpleFoam 不过既然你们都说要buoyantPimpleFoam 我可以写一写 http://dyfluid.com/rhoPimpleFoam.html 网上也有一些其他的资料应该,不过自从我自己写自己的推导之后,就没看过别人的 :qichuang: 这个求解器只不过就是可压缩求解器+传热,没啥大的特殊

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    1 条回复 最后回复
2020年6月28日 10:02

3/7

2020年6月28日 10:36

未读 4
2020年6月29日 00:41
  • 登录

  • 登录或注册以进行搜索。
3 / 7
  • 第一个帖子
    3/7
    最后一个帖子
0
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]