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. 热压通风p_rgh边界条件设置

热压通风p_rgh边界条件设置

已定时 已固定 已锁定 已移动 OpenFOAM
15 帖子 2 发布者 151 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • K 在线
    K 在线
    krzz1945
    写于 最后由 编辑
    #1

    各位大佬,小白请教(Openfoam org V12):
    想问一下在设置热压通风下的缝隙开孔渗透风时,我采用了prghTotalPressure边界,设定:

    room_window
    {
    type prghTotalPressure;
    p0 uniform 0;
    }
    

    设定pRef在文件constant/pRef
    为101325

    问题在于如此计算的渗透风速过高 不符合常理,1.2高差的窗户居然上边缘风速有3.5m/s。

    初步排查因该确认为 prghTotalPressure中的p0为固定值pRef,外界压力没有随高差下降,导致流域内的p_rgh全为正值,且不同高度处的 p_rgh差值近似为 rg*高差

    所以想要请教一下各位前辈:
    1.是否是我的边界设置错误
    2.如果是p0的问题 我该如何设置随高度变化的外部压力呢(用ai帮忙写的压力边界会使计算直接发散,如下):

    room_window
    {
        type            codedFixedValue;
        value           $internalField;
        name            simplePrghPressure;
        code
        #{
            // 简化版本 - 手动指定重力
            const vector g(0, -9.81, 0); // 重力矢量
            
            // 硬编码字段名
            const word rhoName = "rho";
            const word UName = "U";
            
            // 获取边界场
            const fvPatchScalarField& rhoBoundary = 
                patch().lookupPatchField<volScalarField, scalar>(rhoName);
            const fvPatchVectorField& UBoundary = 
                patch().lookupPatchField<volVectorField, vector>(UName);
            
            // 获取坐标
            const vectorField& C = patch().Cf();
            scalarField p0(C.size());
            
            // 参考参数
            const scalar p0_ref = 0; // 参考压力
            const scalar H_ref = 0;       // 参考高度
            const scalar rho_ref = 1.2;   // 参考密度 (kg/m³)
            
            // 线性压力分布
            forAll(C, i)
            {
                scalar h = C[i].y() - H_ref;
                p0[i] = p0_ref - rho_ref * mag(g) * h;
            }
            
            // 计算prghTotalPressure
            vectorField hVector(C.size());
            forAll(C, i)
            {
                hVector[i] = vector(0, C[i].y() - H_ref, 0);
            }
            
            operator==
            (
                p0 
                - 0.5*rhoBoundary*magSqr(UBoundary) 
                - rhoBoundary*(g & hVector)
            );
        #};
        
        // 必需字段
        rho             rho;
        U               U;
    }
    
    1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #2

    设置热压通风下的缝隙开孔渗透风时

    没看懂,最好来个图

    9月CFD算法编程课: http://dyfluid.com/class.html

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

    1 条回复 最后回复
  • K 在线
    K 在线
    krzz1945
    写于 最后由 编辑
    #3

    @李东岳

    image.png

    非常抱歉,之前提问的过于仓促

    问题是我在将窗缝应用上述p_rgh边界后,存在计算出的渗透风速过大的问题。
    1.p_rgh结果分布
    300079d8-8cfc-46dc-b495-13fb0c20b954-image.png
    2.窗缝法向风速
    1daad563-8eae-412b-aa16-ec5a04e77c52-image.png
    理论上,窗缝上下边缘在不计室内对流的情况下,上下窗缝压差应该为:
    $\Delta P = \Delta\rho\cdot g \cdot H$
    $\Delta \rho$为室内外温度下的空气密度差
    假设室内25℃,室外35℃,室内外密度差约为:$0.0385 kg/m^3$
    本例窗户高 $H$为1.2$m$。
    计算得上下窗缝边缘的压差应当约为:$\Delta P = 0.0385 \times 9.81 \times 1.2 =0.453 Pa$
    显然不足以支撑图中如此大的风速,便怀疑压力边界使用错误(即帖子最初的提问)

    下面是窗缝的其他边界条件:

    //T
    room_window
    {
    type inletOutlet;
    inletValue uniform 308.15;//35℃
    value uniform 308.15;
    }
    
    //U
    room_window
    {
    type pressureInletOutletVelocity;
    tangentialVelocity uniform (0 0 0 );
    value uniform (0 0 0);
    }
    
    //p
    room_window
    {
    type calculated;
    value uniform 101325;}
    
    

    k、e、alphat、nut不再列出

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

    机械送风是固定速度进口么?
    机械排风是什么边界条件?

    9月CFD算法编程课: http://dyfluid.com/class.html

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

    1 条回复 最后回复
  • K 在线
    K 在线
    krzz1945
    写于 最后由 编辑
    #5

    @李东岳
    机械送风是速度入口 机械排风为压力出口

    机械送风边界条件:

    //U
    room_supplyAir
    {
    type fixedValue;
    value uniform (0 -3 0);
    }
    
    //p_rgh
    room_supplyAir
    {
    type fixedFluxPressure;
    value uniform 0;
    }
    
    //p
    room_supplyAir
    {
    type calculated;
    value uniform 101325;
    }
    
    //T
    room_supplyAir
    {
    type fixedValue;
    value uniform 293.15;
    }
    

    机械排风边界条件:

    //U
    room_returnAir
    {
    type zeroGradient;
    }
    
    //p_rgh
    room_returnAir
    {
    type prghPressure;
    p uniform 0;
    value uniform 0;
    }
    
    //p
    room_returnAir
    {
    type calculated;
    value uniform 101325;
    }
    
    //T
    room_returnAir
    {
    type zeroGradient;
    }
    
    1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #6

    你预期的效果,是那一圈窗户缝,上面进入流体,下面出流体。然后上面进去的流体还是温度高的,下面出来的流体是温度低的?

    9月CFD算法编程课: http://dyfluid.com/class.html

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

    1 条回复 最后回复
  • K 在线
    K 在线
    krzz1945
    写于 最后由 编辑
    #7

    @李东岳
    您说得不错,我想要模拟出上进下出的自然风渗透在窗户高度上的变化,但是可能我哪里设置错误并没有出现此类情况

    下图是类似情况的示意图(网络上随便找的一张):

    image.png

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

    你这个速度倒是可以算出来类似的。但是温度算不出来。除非你外面再画一圈网格。也除非你指定T的进口温度。否则他不会在上面进来热的空气,下面出去冷的空气

    9月CFD算法编程课: http://dyfluid.com/class.html

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

    1 条回复 最后回复
  • K 在线
    K 在线
    krzz1945
    写于 最后由 编辑
    #9

    @李东岳
    温度倒是有一点类似(好像算出来一点,进去的时候指定35℃,出来的时候是室内的温度):

    image.png
    6cb03828-a5af-41fe-8c44-c4664b800108-image.png

    下面出去的风确实是冷一点的流体。

    但关键问题是,那个虽然很像的速度分布,数值上貌似不正确,只有0.5Pa左右的渗透压力,风速达到了3-4m/s

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

    网格多少?

    9月CFD算法编程课: http://dyfluid.com/class.html

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

    1 条回复 最后回复
  • K 在线
    K 在线
    krzz1945
    写于 最后由 编辑
    #11

    网格信息如下:

    Mesh stats
        points:           540991
        faces:            1425608
        internal faces:   1343072
        cells:            443712
        faces per cell:   6.23981
        boundary patches: 7
    

    房间尺寸4m×3m×3m

    1 条回复 最后回复
  • K 在线
    K 在线
    krzz1945
    写于 最后由 编辑
    #12

    @李东岳
    我感觉是压力边界除了问题,prghTotalPressure如相关介绍:

    https://doc.openfoam.com/2306/tools/processing/boundary-conditions/rtm/derived/general/prghTotalPressure/
    393ea33c-8cc3-421d-bfeb-4a85ef8118d8-image.png

    其中的 $p_0$ 是标量定值,但理论上窗外的热空气也会随高度下降而总压下降的。
    然后自己请AI帮忙写了随高度变化$p_0$的边界codedFixedValue,但是一应用就发散,计算不了,粘贴前文代码:

    room_window
    {
        type            codedFixedValue;
        value           $internalField;
        name            simplePrghPressure;
        code
        #{
            // 简化版本 - 手动指定重力
            const vector g(0, -9.81, 0); // 重力矢量
            
            // 硬编码字段名
            const word rhoName = "rho";
            const word UName = "U";
            
            // 获取边界场
            const fvPatchScalarField& rhoBoundary = 
                patch().lookupPatchField<volScalarField, scalar>(rhoName);
            const fvPatchVectorField& UBoundary = 
                patch().lookupPatchField<volVectorField, vector>(UName);
            
            // 获取坐标
            const vectorField& C = patch().Cf();
            scalarField p0(C.size());
            
            // 参考参数
            const scalar p0_ref = 0; // 参考压力
            const scalar H_ref = 0;       // 参考高度
            const scalar rho_ref = 1.2;   // 参考密度 (kg/m³)
            
            // 线性压力分布
            forAll(C, i)
            {
                scalar h = C[i].y() - H_ref;
                p0[i] = p0_ref - rho_ref * mag(g) * h;
            }
            
            // 计算prghTotalPressure
            vectorField hVector(C.size());
            forAll(C, i)
            {
                hVector[i] = vector(0, C[i].y() - H_ref, 0);
            }
            
            operator==
            (
                p0 
                - 0.5*rhoBoundary*magSqr(UBoundary) 
                - rhoBoundary*(g & hVector)
            );
        #};
        
        // 必需字段
        rho             rho;
        U               U;
    }
    
    1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #13

    但理论上窗外的热空气也会随高度下降而总压下降的

    你那个尺度比较小,基本可以忽略,当做恒定。

    9月CFD算法编程课: http://dyfluid.com/class.html

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

    1 条回复 最后回复
  • K 在线
    K 在线
    krzz1945
    写于 最后由 编辑
    #14

    @李东岳
    如果不考虑外界压降 比如1.2m高度上就会少减去14Pa的压力 这部分压力会转化为空气的动压 平摊到进风出风两个边缘各7Pa 对于密度1.2的空气而言 这个动压会导致3.4m/s的渗透风速 而一般应该在0.6m/s 这样导致的渗透风量会有5倍以上的差距
    综上 是不是不太能够忽略

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

    比如1.2m高度上就会少减去14Pa的压力

    14对于101325,是个可以忽略的数。这也是p_rgh存在的意义。

    9月CFD算法编程课: http://dyfluid.com/class.html

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

    1 条回复 最后回复

  • 登录

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