请教OpenFOAM获得某个面域(faceZone)的平均温度的方法



  • 我想使用functions获得某个面域平均温度,于是自己写了如下代码:

    surfaceFieldValue_out_core
    {
        type    surfaceFieldValue;
        libs    ("libfieldFunctionObjects.so");
    
        log     true;
        writeControl    writeTime;
        writeFields     true;
    
        regionType      faceZone;
        name            out_core;
        operation       weightedAreaAverage;
        surfaceFormat   foam;
    
        fields
        (
            T
        );
    }
    

    然而,运行之后报错,如下所示:

    [4] --> FOAM FATAL ERROR: 
    [4] surfaceFieldValue surfaceFieldValue_in_core: faceZone(in_core):
        Unable to process internal faces for volume field T
    

    似乎体积场的值不可以进行面域平均,这样的话,获得“面域平均”值该如何做到呢?望各位大佬不吝赐教,谢谢!



  • 可能你需要体平均。

    functions
    {  
        T
        {
            type            volFieldValue;
            libs            ("libfieldFunctionObjects.so");
            log             true;
            writeControl    writeTime;
            writeFields     true;
            regionType      all;
            operation       volIntegrate;
            fields
            (
                T
            );
        }
    }
    


  • @东岳 谢谢东岳老师,体平均的方法我会,但是我想要知道面平均的结果。比如说,我想知道进出口平均温度(应该是指的进出口那个面的平均温度),而体平均得到的是一个区域(或者说一个块)的平均。OpenFOAM没办法做到这一点吗?



  • postProcess -func 'patchAverage(name='outlet', weightedAlpha)'

    试试这个后处理?



  • @东岳 老师,这个指令不行,因为我监测的不是边界(patch),而是自己构建的一个faceZone,是一个内部面。应该是目前OpenFOAM尚未有这个功能吧



  • @D-Benjamin 我觉得这个可以在paraview里面处理,先把这个面提出来,然后对这个面的温度进行积分就是了。我不知道这样子处理对不对@东岳



  • @mohui 你好,paraview确实可以截取一个面,然后进行积分,但是我发现一个问题:
    当我想获得某个faceZone上面的流率,我分别采用functionObject和paraview的方法来做
    functions的方法和结果如下:

    functions
    {
    #includeFunc flowRateFaceZone(name=in_core)
    … other function objects here …
    }
    

    结果:

    # Region type :     faceZone in_core
    # Faces  :          34
    # Area   :          1.844282222040e-02
    # Time              	sum(phi)
    1                   	1.923278992112e-05
    2                   	4.681282016134e-05
    ……
    50000               	6.288750194955e-02
    

    下面是使用paraview截取该面,进行Filters --> Integrate variables的结果:
    cut.PNG

    结果显示,面域大小(Area)0.0184428是一样的,但是所得的结果却不一样,一个是0.0628875,一个是0.0629128,搞不清哪种方法获得的流率才是正确的。



  • @D-Benjamin请教OpenFOAM获得某个面域(faceZone)的平均温度的方法 中说:

    functionObject

    这个看起来是标量,你那个是矢量



  • @东岳 老师,functionObject的求流率的方法是对面域通量phi求和,paraview是对面域求积分,哪个更能代表流率呢?



  • @D-Benjamin
    没向你这么验证过,不过我更相信代码出来的标量,paraview显示的是矢量啊?


Log in to reply