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. OF中在有限的计算域中怎么消去边界对气泡的影响

OF中在有限的计算域中怎么消去边界对气泡的影响

已定时 已固定 已锁定 已移动 OpenFOAM
5 帖子 2 发布者 2.5k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • Z 离线
    Z 离线
    zhendong
    写于2021年10月12日 03:17 最后由 编辑
    #1

    各位老铁你们好,我想请教OpenFOAM的一些问题,主要内容是

    • 使用blockMesh内存不够问题
    • 计算域不大的算例,边界会对计算结果产生很大影响,怎样设置边条可以达到精确结果
    • dynamicRefineFvMesh相关

    以下问题均在v8版本运行得到的,求解器是用的compressibleInterFoam,问题主要和气泡有关。

    1. 关于blockMesh能否画超大网格

    我想在超算上画一个网格,尺寸是500×500×500的立方体网格,使用方法是直接blockMesh,但是问题是这样做的话会报错,目测是超算的内存不够(已经128G),ICEM好像也有限制,大概4003左右;

    86f478b6-0d6e-49a7-9391-0bf671b1e223-image.png

    现在的问题是怎样用blockMesh画5003或更大的网格,可以并行画吗?还是只能加内存?

    2. 对于及串气泡组,如何设置边界条件并消去边界对它的影响

    想要模拟的是这样子的(记算例A):

    a996403c-d709-4ab6-bec2-86ba37ccb82a-image.png

    它的网格是这样子的:

    convertToMeters 0.01;
    box_len 1;
    z_len 0.25;
    node 200;
    z_node 50;
    vertices
    (
    (0 0 0)
    ($box_len 0 0)
    ($box_len $box_len 0)
    (0 $box_len 0)
    (0 0 $z_len)
    ($box_len 0 $z_len)
    ($box_len $box_len $z_len)
    (0 $box_len $z_len)
    );
    blocks
    (
    hex (0 1 2 3 4 5 6 7) ($node $node $z_node) simpleGrading (1 1 1)
    );
    edges
    (
    );
    boundary
    (
    box_wall
    {
    type patch;
    faces
    (
    (0 4 7 3)//lift
    (2 6 5 1)//right
    (4 5 6 7)//frant
    (0 3 2 1)//back_xoy
    );
    }
    syclic_top
    {
    type cyclic;
    neighbourPatch syclic_bottom;
    faces
    (
    (3 7 6 2)//top
    );
    }
    syclic_bottom
    {
    type cyclic;
    neighbourPatch syclic_top;
    faces
    (
    (1 5 4 0)//bottom_xoz
    );
    }
    );
    mergePatchPairs
    (
    );

    (图中上下是cyclic的边界条件)

    其他边界条件类似:

    FoamFile
    {
    version 2.0;
    format ascii;
    class volVectorField;
    object U;
    }
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
    dimensions [0 1 -1 0 0 0 0];
    internalField uniform (0 0 0);
    boundaryField
    {
    box_wall
    {
    type pressureInletOutletVelocity;
    value $internalField;
    }
    "syclic_.*"
    {
    type cyclic;
    value $internalField;
    }
    }
    // ************************************************************************* //

    结果是这样子的:

    bc28ffa5-dcfb-4a0a-9577-a18915bc993d-image.png

    右图上下是cyclic边界条件,气泡接近计算边界了

    一开始感觉似乎应该是这个样子的,但是不太放心,后来把六个面都换成patch类型(记算例B),发现结果类似,都是慢慢变成椭圆泡。

    而当我用问题一中的网格(3003),边界设置同算例B(记这个算例为C),发现半径结果如下:

    847e9b63-884e-42a4-87e3-a04b1c757f63-image.png

    红色是理论解,绿色是算例C的结果,蓝色是算例B的结果,橙色是算例A的结果。对比A,B发现近边界对结果影响及其巨大,即使设置成流体自由出入的方法也不行。

    因此想咨询下有比较好的解决方法吗?既用小的计算域同时又能消除边界的强影响,从而达到使用cyclic边界条件

    3.自适应网格对初始网格较小的情况下似乎不太实用

    在dynamicFvMeshDict修改文件为:

    dynamicFvMesh dynamicRefineFvMesh;
    refineInterval 1;
    field alpha.water;//加密什么场
    lowerRefineLevel 0.001;
    upperRefineLevel 0.999;
    unrefineLevel 20;
    nBufferLayers 3;
    maxRefinement 4;
    maxCells 1000000;
    correctFluxes
    (
    (phi none)
    (nHatf none)
    (rhoPhi none)
    (alphaPhi0.water none)
    (ghf none)
    );
    dumpLevel true;

    一般来说,我想用这样的自适应网格来处理背景网格不是那么密集的算例。理想结果是既能用不是太密的均匀背景网格算好液体中的压力、速度等物理量,又可以用自适应网格在边界进行加密达到好的捕捉效果。

    但是问题是在不密集的背景网格下使用setFields命令后,初始得到的气泡过于小,从而再局部加密就成为一个格子的方形气泡;除此之外,网格多了锯齿感比较明显,这个是不可避免的吗?

    7bd23c8e-8df6-481b-b9f7-63a8f1f9d39c-image.png

    这块的主要问题还是如标题所描述的,能不能让自适应网格捕捉0步的边界,在较粗的背景网格下,让第一步就有非常光滑、密集的边界呢?该怎么操作?

    感谢!

    暂时就三个问题,希望大佬们给点帮助~

    (另外还有个问题,如果一次性模拟多个气泡,能不能有捕捉每个气泡的方法,同时也需要考虑了气泡的运动)

    Z 1 条回复 最后回复 2021年10月12日 03:36
  • Z 离线
    Z 离线
    zhendong
    在 2021年10月12日 03:36 中回复了 zhendong 最后由 编辑
    #2

    @zhendong 3D_string_bubble.tar.xz

    1 条回复 最后回复
  • 李 在线
    李 在线
    李东岳 管理员
    写于2021年10月12日 08:10 最后由 编辑
    #3

    先回复你第一个简单的,上亿的网格确实可能会有内存问题,很有可能生成不了,blockMesh无法并行。

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

    李 1 条回复 最后回复 2021年10月12日 08:13
  • 李 在线
    李 在线
    李东岳 管理员
    在 2021年10月12日 08:13 中回复了 李东岳 最后由 编辑
    #4

    既用小的计算域同时又能消除边界的强影响,从而达到使用cyclic边界条件

    算法上倒是有一些。比如那些advection边界条件。但是扩大计算域是最稳妥的方法。你这个是空炮么?可以设置非均匀网格处理。外围网格非常非常稀疏,里面足够细,也不会太多的网格。

    锯齿网格可能开始会有,但随着计算,表面张力的作用会变平

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

    Z 1 条回复 最后回复 2021年10月12日 10:46
  • Z 离线
    Z 离线
    zhendong
    在 2021年10月12日 10:46 中回复了 李东岳 最后由 编辑
    #5

    @李东岳

    @李东岳 在 OF中在有限的计算域中怎么消去边界对气泡的影响 中说:

    既用小的计算域同时又能消除边界的强影响,从而达到使用cyclic边界条件

    算法上倒是有一些。比如那些advection边界条件。但是扩大计算域是最稳妥的方法。你这个是空炮么?可以设置非均匀网格处理。外围网格非常非常稀疏,里面足够细,也不会太多的网格。

    锯齿网格可能开始会有,但随着计算,表面张力的作用会变平

    李老师你好,算例的确是计算空泡的;

    扩大计算域的话,可能没办法满足我的需求,原因如下:

    • 气泡的间距是算例的一个主要变量,很需要近距离的情况
    • 如果足够远的话,循环边界条件可能就没有作用了
    • 非均匀网格的话,一方面无法确保在流体中的压力、速度的正确捕捉;其次在网格密-疏位置处,是不是会使得结果误差比较大呢?
    • 如果一开始就是锯齿网格的话,那后续的计算精度感觉不能保证。原因是在高的内压驱动下,初始泡的大小决定之后的每步计算结果,所以一开始的边界捕捉及其重要

    所以还是想咨询下,能不能一开始在0文件中就能很好的捕捉相分数场,粗的背景网格+细气泡边界网格,之后就用自适应网格计算。

    其次还问下advection边界条件的使用方法或相关链接

    麻烦李老师了~

    1 条回复 最后回复
2021年10月12日 03:17

3/5

2021年10月12日 08:10

2021年10月12日 10:46
  • 登录

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