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. interFoam计算气泡槽道流时的压力问题

interFoam计算气泡槽道流时的压力问题

已定时 已固定 已锁定 已移动 OpenFOAM
20 帖子 3 发布者 16.4k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • 学流体的小明学 离线
    学流体的小明学 离线
    学流体的小明 神
    在 中回复了 coolhhh 最后由 编辑
    #11

    @coolhhh
    从pEqn.H的代码来看,并没有这种water / gas之分
    @李东岳

    1. 没试过单核跑,单核算得会非常慢,而且估计得算几步才能看结果,我试一下。
    2. correctPhi是必须要是yes的,改成no的话会造成自适应加密出问题,流场所有地方的alpha.water会变得不严格是1,比1小一些,然后流场的所有地方都会加密。
    1 条回复 最后回复
  • 学流体的小明学 离线
    学流体的小明学 离线
    学流体的小明 神
    在 中回复了 李东岳 最后由 编辑
    #12

    @李东岳 东岳老师,最近试了很多参数,发现了点规律。

    1. 应该是自适应网格的问题。如果使用自适应网格而不显式地指定correctPhi,程序会自动调用correctPhi。并且自适应网格必须correctPhi,否则会导致alpha.water出问题,全场都加密。
    bool correctPhi
    (
        pimple.dict().getOrDefault("correctPhi", mesh.dynamic())
    );
    
    1. 不使用自适应网格,但是correctPhi yes,流场的压力结果也正常。
    2. 单核跑,即使是自适应网格,自动调用correctPhi,流场也计算正常。

    应该是 并行 + 自适应网格 的问题?是不是要在dynamicMeshDict中进行correctFluxes操作呀?但我看Tutorial里面都没correctFluxes。

    学流体的小明学 1 条回复 最后回复
  • 李东岳李 离线
    李东岳李 离线
    李东岳 管理员
    写于 最后由 编辑
    #13

    我看到Correctphi代码里面:

        while (pcorrControl.correctNonOrthogonal())
        {
            // Solve for pcorr such that the divergence of the corrected flux
            // matches the divU provided (from previous iteration, time-step...)
            fvScalarMatrix pcorrEqn
            (
                fvm::laplacian(rAUf, pcorr) == fvc::div(phi) - divU
            );
    
            pcorrEqn.setReference(0, 0);
    
            pcorrEqn.solve();
    
            if (pcorrControl.finalNonOrthogonalIter())
            {
                phi -= pcorrEqn.flux();
            }
        }
    

    第10行是硬植入的,你看看把pcorrEqn.setReference(0, 0)改成p_rghEqn.setReference(pRefCell, getRefCellValue(p_rgh, pRefCell))是否有作用。

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

    学流体的小明学 1 条回复 最后回复
  • 学流体的小明学 离线
    学流体的小明学 离线
    学流体的小明 神
    在 中回复了 李东岳 最后由 编辑
    #14

    我按照您说的方法修改了代码,没有什么大的改变。虽然这行代码确实不太对。
    还有就是不太明白setRefrence()这个函数

    template<class Type>
    void Foam::fvMatrix<Type>::setReference
    (
        const label celli,
        const Type& value,
        const bool forceReference
    )
    {
        if ((forceReference || psi_.needReference()) && celli >= 0)
        {
            source()[celli] += diag()[celli]*value;
            diag()[celli] += diag()[celli];
        }
    }
    

    把方程中,RefCell位置的源项加上一个值,然后系数矩阵对角线上RefCell位置翻倍?


    还发现一点是自适应加密的间隔可以调小,改成1。每次都运行自适应这个模块,但不是每一步都会导致网格变化,所以调小一些也没事。可能需要nBufferLayers调大到2。
    自适应加密间隔调小之后,流场也算得比较好了。自适应加密间隔再从1调整到5,压力马上就出问题了。下面图中0.09s之后就是自适应加密间隔调大的后果。
    0d82a382-8010-4a8e-bea5-f182143c9520-image.png

    学流体的小明学 1 条回复 最后回复
  • 学流体的小明学 离线
    学流体的小明学 离线
    学流体的小明 神
    在 中回复了 学流体的小明 最后由 编辑
    #15

    学流体的小明 在 interFoam计算气泡槽道流时的压力问题 中说:

    我按照您说的方法修改了代码,没有什么大的改变

    甚至导致结果更差了。
    933c0b16-2a57-4be7-aa2c-93b9204e23fe-image.png

    不进行这样的修改的话,相同的设置下,相同测点的压力如下图,可以看到紫色线有明显的台阶上升,这是气泡经过了这个测点,测到了气泡内部的压强。
    109e2b70-7820-46b4-81d5-195dff6dd753-image.png

    1 条回复 最后回复
  • 李东岳李 离线
    李东岳李 离线
    李东岳 管理员
    写于 最后由 编辑
    #16

    把方程中,RefCell位置的源项加上一个值,然后系数矩阵对角线上RefCell位置翻倍?

    信息量很大。我稍后回复你这个问题。不过圣诞节要放假了。明天没回复你就得月底了。

    这个看起来是个bug。不过要让官方debug测试,他们需要你提供一个小网格的算例他们复现一下。你这个原本的3D-LES他们debug不动。

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

    学流体的小明学 1 条回复 最后回复
  • 学流体的小明学 离线
    学流体的小明学 离线
    学流体的小明 神
    在 中回复了 李东岳 最后由 编辑
    #17

    我搞了一个125000网格的小算例,也可以复现流场整体异常压力跳跃的问题,不用跑完,跑几分钟就可以用里面的gnuplot脚本画图看到流场的压力。
    算例放上来了,李老师@李东岳 您有空帮我看看,非常感谢!
    singleBubbleChannel_debug.zip

    1 条回复 最后回复
  • 李东岳李 离线
    李东岳李 离线
    李东岳 管理员
    写于 最后由 编辑
    #18

    把方程中,RefCell位置的源项加上一个值,然后系数矩阵对角线上RefCell位置翻倍?

    我在无痛苦ns方程笔记里面详细的写了这个,你看一下setReference()这一节。

    我下载看一下能不能跑动。感觉有点够呛,我这是单核虚拟机。

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

    学流体的小明学 1 条回复 最后回复
  • 学流体的小明学 离线
    学流体的小明学 离线
    学流体的小明 神
    在 中回复了 李东岳 最后由 编辑
    #19

    单核跑算出来的结果非常好,图中所有测点的压强降到-140左右是因为气泡经过了参考点,参考点(此时在气泡内部)的压强为0,外部的水的压强就应该是-144。这个算例的参考点、测点的设置和我上传的那个不一样。
    d4824375-b9f9-410d-854f-e81b6218addf-image.png

    1 条回复 最后回复
  • 学流体的小明学 离线
    学流体的小明学 离线
    学流体的小明 神
    在 中回复了 学流体的小明 最后由 编辑
    #20

    学流体的小明 在 interFoam计算气泡槽道流时的压力问题 中说:

    应该是 并行 + 自适应网格 的问题?

    更正一下,是 并行+自适应网格+压力参考点 三个要素的共同作用,去掉任何一个都可以算出来好的结果。

    一个新的发现是壁面上会有奇异点,如下图,着色是p_rgh,这些奇异点都处于并行分区的各个界面上。更奇怪的是,上壁面并没有这样的问题。Note:参考点放置在流场中间。
    01292e97-19c8-45be-889b-189c0ff6fe54-image.png

    现在暂时放弃自适应加密了,直接全场加密算,压力就是正确的。
    😂

    1 条回复 最后回复

  • 登录

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