请教:buoyantBoussinesqPimpleFoam边界条件设置



  • 物理问题描述(2-D) :(本来想画个图的,可惜我每次上传图片都不成功,还好这个问题不复杂,用文字描述好了) 一个方盒子,内部有5摄氏度的水(冷水),底部恒温加热(比如200摄氏度);左右两侧壁绝热且无流体出入(closed);顶部可供流体自由出入(比如冷水可以向下流动,热水可以向上流动流出)。假设整个盒子处于100 m深的冷水中,也就是顶部有一个固定液压1 MPa。
    这个问题也就是流体受热在浮力作用下的流动问题

    OpenFoam求解器 : buoyantBoussinesqPimpleFoam貌似可以求解这个问题,但是这个求解器里面有湍流模型和其他一些选项,不利于我这样的初学者理解。将buoyantBoussinesqPimpleFoam稍做修改:去掉了湍流模型,温度方程中的扩散系数假设为一个常数,取消了压力参考设置。 代码和算例以上传至github-hotwaterFoam

    算例中设置了这样范围的一个二维网格 x: [0,0]; y:[-110,-100]; z: [-1,1]. 网格节点个数: (90 100 1) ;长度单位都是m。(算例文件也在hotwaterFoam里面)初始条件和边界条件设置如下

    出来的结果跟预想的不一样,不知道问题出在哪里了,代码应该没有问题。不知道这个边界条件设置是否正确,如果不正确,那么上面的这个物理问题应该如何设置边界条件。请教各位大神

    1. 温度 T
    internalField   uniform 5;
    
    boundaryField
    {
        floor
        {
            type            fixedValue;
            value           uniform 200;
        }
        ceiling
        {
            type            inletOutlet;
            inletValue 5;
            value 0;
        }
        sideWalls
        {
            type            zeroGradient;
        }
    
    }
    
    1. p_rgh
    internalField   uniform 0;
    
    boundaryField
    {
        floor
        {
            type            fixedFluxPressure;
            rho             rhok;
            value           $internalField;
        }
        ceiling
        {
            type            fixedFluxPressure;
            rho             rhok;
            value           $internalField;
        }
        sideWalls
        {
            type            zeroGradient;
        }
    }
    
    1. p
    internalField   uniform 0;
    
    boundaryField
    {
        wall
        {
            type            calculated;
            value           $internalField;
        }
    }
    
    1. U
    internalField   uniform (0 0 0);
    
    boundaryField
    {
        floor
        {
            type            noSlip;
            //type            fixedValue;
            //value           (0 0.001 0);
        }
        ceiling
        {
            type            noSlip;
        }
        sideWalls
        {
            type            noSlip;
        }
    }
    


  • 太棒了! 我运行了楼主写的 hotWater 求解器。

    我从运行结果上看,似乎是温度和期望值不同? 时间点为 50 的时候, 我发现温度的 contour 比较合理,热水上升。

    但是下边界层温度的梯度是不是太大了?即便在 300 秒后,从 温度的 contour 上看,依旧是非常明显的分层。 个人觉得温度应该从下自上缓慢过度才对?

    到模拟结束的时候,我发现全场的温度都稳定在了 27 (温度是 K?),确实是和想象中不一样。

    楼主有没有试过用原来的求解器做相同的算列?结果怎么样呢?



  •     fvScalarMatrix TEqn
        (
            fvm::ddt(T)
          + fvm::div(phi, T)
          - fvm::laplacian(alphaEff, T)
         ==
            radiation->ST(rhoCpRef, T)
          + fvOptions ( t)
        );
    

    去掉这个

         ==
            radiation->ST(rhoCpRef, T)
          + fvOptions ( t)
    

    个人觉得,楼主提供的数值算例是对这个修改过方程的解, 但是这样的修改,能否在一定精度内代表真实的物理现象呢?



  • @random_ran 是的,温度跟想象的不一样。
    我试了底边界温度如果太低的话短时间内几乎不会有plume splitting,所以试了一下更高的温度。
    我这里的温度单位都是摄氏度。

    这个我是从原来的求解器基础上改的,用自带的算例BenardCells一步一步测试,求解器简化后对这个算例的结果并没有什么影响,所以我猜求解器修改应该没错。



  • @random_ran 原来的求解器的alphaEff好像是根据湍流模型计算出来的,具体细节还没搞懂。我在原来求解器算例的求解过程中输出了这个量,发现是0.001,是个常数。从量纲来看应该与热传导系数/密度/比热相同,我就在修改后的求解器中暂用DT/cp_f/rho0_f代替了。

    ==后面的应该是与源项有关的东西,我这里没有其他热源,所以就去掉了,不知道是不是会有别的影响。(我在原来求解器和BenardCells算例基础上测试了,去掉这一项对结果没有什么影响

    看结果好像是不能够有效地从底边界传热,不知道是不是边界条件设置的问题,还是其他什么原因



  • @东岳 帖子好像沉掉了,再次求助李老师。主要就是顶部边界条件不知道怎么设置,顶部是定压,也就是P是恒定的,但是流体可以自由出入。而方程中求解的是prgh,所以不知道prgh如何设置边界条件了,可能还需要与出口的速度边界条件保持一致性


Log in to reply