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. 请教OpenFOAM获得某个面域(faceZone)的平均温度的方法

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

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

    我想使用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
    

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

    OpenFOAM初学者,希望和大家共同交流

    M 东方白杨东 2 条回复 最后回复
  • 李东岳李 离线
    李东岳李 离线
    李东岳 管理员
    写于 最后由 编辑
    #2

    可能你需要体平均。

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

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

    D Z 2 条回复 最后回复
  • D 离线
    D 离线
    D.Benjamin
    在 中回复了 李东岳 最后由 编辑
    #3

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

    OpenFOAM初学者,希望和大家共同交流

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

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

    试试这个后处理?

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

    D 1 条回复 最后回复
  • D 离线
    D 离线
    D.Benjamin
    在 中回复了 李东岳 最后由 编辑
    #5

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

    OpenFOAM初学者,希望和大家共同交流

    1 条回复 最后回复
  • M 离线
    M 离线
    mohui
    在 中回复了 D.Benjamin 最后由 编辑
    #6

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

    D 1 条回复 最后回复
  • D 离线
    D 离线
    D.Benjamin
    在 中回复了 mohui 最后由 编辑
    #7

    @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,搞不清哪种方法获得的流率才是正确的。

    OpenFOAM初学者,希望和大家共同交流

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

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

    functionObject

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

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

    D 1 条回复 最后回复
  • D 离线
    D 离线
    D.Benjamin
    在 中回复了 李东岳 最后由 编辑
    #9

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

    OpenFOAM初学者,希望和大家共同交流

    李东岳李 1 条回复 最后回复
  • 李东岳李 离线
    李东岳李 离线
    李东岳 管理员
    在 中回复了 D.Benjamin 最后由 编辑
    #10

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

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

    1 条回复 最后回复
  • Z 离线
    Z 离线
    ZZ给我趴下
    在 中回复了 李东岳 最后由 编辑
    #11

    @李东岳 李老师,您好,请问如果我只想在某个方向进行体平均呢,然后每个时间段输出一次数据,是不是只要更改regionType就好了,那该如何更改呢?

    马乔马 1 条回复 最后回复
  • 马乔马 离线
    马乔马 离线
    马乔 大神
    在 中回复了 ZZ给我趴下 最后由 编辑
    #12

    @zz给我趴下 可以试下columeAveraged

    装逼没输过,吵架没赢过!

    Z 1 条回复 最后回复
  • Z 离线
    Z 离线
    ZZ给我趴下
    在 中回复了 马乔 最后由 编辑
    #13

    @马乔 好的,谢谢您。

    1 条回复 最后回复
  • J 离线
    J 离线
    jinlinna
    写于 最后由 编辑
    #14

    你好请问你解决了吗,你的faceZone是怎么创建的呀

    1 条回复 最后回复
  • 东方白杨东 离线
    东方白杨东 离线
    东方白杨
    在 中回复了 D.Benjamin 最后由 编辑
    #15

    @D-Benjamin 在 请教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
    

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

    您好,请问您这个报错怎么解决的?我现在也是自己定义了一个内部面faceZone,我理解的这个报错是因为OF是有限体积法,物理量值都存在网格cell中心,导致取的内部面没有物理量值。

    CAS-IET

    1 条回复 最后回复

  • 登录

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