CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新

    openfoam 流向做空间平均

    OpenFOAM
    2
    3
    376
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 氕
      氕氘-川 最后由 编辑

      问一下大家,我下面这个图,如何把流向(x方向)的速度叠加起来成一条线的数据,再做平均啊?有没有处理它的脚本或者paraview处理方法啊?
      f8adc4c6-02c4-4bd7-996d-bbb6c215ef6a-a.0007.png

      X 1 条回复 最后回复 回复 引用
      • X
        xpqiu 教授 @氕氘-川 最后由 编辑

        @氕氘-川
        提供一个思路:

        cat U.csv | cut -d ',' -f1,4 | awk -F ',' '{a[$2] += $1}END{for (i in a) print  i, a[i]/101}' | sort  -k  -n > result.dat
        

        解释:这个命令只适合用于完全结构化的网格,在运行之前,先把面的数据在paraview 里面用 save data 保存为 csv 格式,得到比如 U.csv 文件,文件的格式大概会是这样:

        "U:0","U:1","U:2","Points:0","Points:1","Points:2"
        -1.4689,3.6702e-06,0.050816,0.48,-2.0363e-18,0
        -1.4798,-1.5563e-05,0.053272,0.484,-2.0363e-18,0
        -1.4552,-1.7582e-06,0.047285,0.476,-2.0363e-18,0
        -1.4735,-3.2403e-05,0.054114,0.48572,-2.0363e-18,0
        -1.4647,-3.2213e-05,0.054475,0.488,-2.0363e-18,0
        -1.4418,-2.5745e-05,0.043431,0.472,-2.0363e-18,0
        -1.4301,-3.9025e-05,0.039604,0.468,-2.0363e-18,0
        -1.343,-4.6674e-06,0.053974,0.428,-4.1301e-18,0
        
        

        6 列分别是 Ux Uy Uz,x,y,z。

        命令是用shell管道来写的,cut -d ',' -f1,4 表示提取 U.csv 的第1列和第4列,列的分隔符由 -d 选项决定,这里是 ,。 然后重头戏是 awk 部分,刚才提到,cut 命令把 csv 文件的第1列和第4列提取出来了,得到了一个新的有两列的数据,第1列是 Ux,第2列是 x,所以 a[$2] += $1 表示创建一个数组 a,然后把第2列(也就是x)相同的第1列的值(Ux)加在一起,通过这种方式,就实现了x方向上的 Ux 的叠加。再后面,print i, a[i]/101 里面的 i 代表 x 的值,a[i] 是每个 x 对应的相同 x 坐标下的所有 Ux 的叠加值,101 这个数字代表x 方向上的格点数量,所以 a[i]/101 就是 Ux 在 x 方向的平均值了。101 这个数值需要根据实际情况来修改。
        最后的 sort 是一个排序,把最终得到的数据按照x从小到大的顺序排序。

        写了这么多,其实最重要的就是理解导出来的 csv 数据的结构,只要明白了里面的结构,就有很多方法可以写出来简单的沿某个方向计算平均的小程序了。

        氕 1 条回复 最后回复 回复 引用
        • 氕
          氕氘-川 @xpqiu 最后由 编辑

          @xpqiu 太感谢您了 您教的好细, 非常感谢 ,对我帮助非常大 ,谢谢您:140:

          1 条回复 最后回复 回复 引用
          • First post
            Last post