栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

openfoam程序paraview pvpython后处理脚本

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

openfoam程序paraview pvpython后处理脚本

今天更新一个用paraview的pvpython对openfoam程序进行后处理的方法,以统计轴向固含量为例

pvpython后处理脚本
  • pvpython
  • 算例简介
  • 创建Python脚本跟踪
    • 1. 开始录制宏脚本
    • 2. 进行操作---以统计轴向固含率为例
      • (1)打开foam或vtk文件
      • (2)统计轴向0~0.05的平均固含率
    • 3.结束录制
  • 使用python脚本
    • 命令行
    • 高级用法

pvpython

ParaView附带了两个执行Python脚本的命令行程序:pvpython和pvbatch。它们类似于python发行版附带的python可执行文件,因为它们从命令行或文件中接受python脚本,并将脚本提供给python解释器。

算例简介


算例是长这样的,dddd。

创建Python脚本跟踪

首先,清空paraview, 选择Edit→ Reset从菜单中重置会话。

1. 开始录制宏脚本

单击Tools菜单中的Start Trace选项。显示了一个带有Trace选项的对话框。现在,只需单击“确定”。


all properties 跟踪所有特性的值,即使它们保持默认值。这有助于保存所有可能的属性,或确保状态一致,而不管其他用户的设置如何。这也会产生非常详细的输出,可能很难读取。
any modified properties 忽略其默认值不变的任何属性。对于大多数用例来说,这是一个很好的选择。
only user-modified properties 忽略用户未明确设置的任何属性。这种性质的跟踪依赖于运行脚本时重新应用的任何内部设置属性。

现在点击Tools菜单中的Start Trace变为了Stop Trace,这表明当前正在录制操作。

2. 进行操作—以统计轴向固含率为例 (1)打开foam或vtk文件

建议用reconstructPar命令合并进程,foamToVTK将foam文件转为vtk文件,-h查看帮助可以指定需要合并的变量,

  -allPatches       combine all patches into a single file
  -ascii            write in ASCII format instead of binary
  -case        specify alternate case directory, default is the cwd
  -cellSet    convert a mesh subset corresponding to the specified cellSet
  -constant         include the 'constant/' dir in the times list
  -excludePatches 
                    a list of patches to exclude - eg '( inlet ".*Wall" )' 
  -faceSet    restrict conversion to the specified faceSet
  -fields 
                    only convert the specified fields - eg '(p T U)'
  -latestTime       select the latest time
  -nearCellValue    use cell value on patches instead of patch value itself
  -noFaceZones      no faceZones
  -noFunctionObjects
                    do not execute functionObjects
  -noInternal       do not generate file for mesh, only for patches
  -noLinks          dont link processor VTK files - parallel only
  -noPointValues    no pointFields
  -noZero           exclude the '0/' dir from the times list, has precedence
                    over the -withZero option
  -parallel         run in parallel
  -pointSet   restrict conversion to the specified pointSet
  -poly             write polyhedral cells without tet/pyramid decomposition
  -region     specify alternative mesh region
  -roots <(dir1 .. dirN)>
                    slave root directories for distributed running
  -surfaceFields    write surfaceScalarFields (e.g., phi)
  -time     comma-separated time ranges - eg, ':10,20,40:70,1000:'
  -useTimeName      use the time name instead of the time index when naming the
                    files
  -srcDoc           display source code in browser
  -doc              display application documentation in browser
  -help             print the usage

(2)统计轴向0~0.05的平均固含率

用土办法,切片求平均,有更好的办法可以一起交流。

  • 新建两个clip

  • 添加一个Python Calculator ,Filters→ Alphabetical→ Python Calculator

    或者 ctrl+space搜索Python Calculator

    Expression填1-mean(voidfraction),Array name随便写比如Solid_holdup,apply

    新建一个layout,选SpreadSheet View


    找到Solid_holdup,即为轴向0~0.05的平均固含率。File →Save Data,保存一个文件名,比如Solid_holdup_1.csv
3.结束录制

现在点击Tools菜单中的Stop Trace,结束录制操作。

得到python脚本文件,里面保留了刚才进行的所有操作。另存为Cal_Solid_holdup.py
现在我们得到一个可以计算轴向0~0.05的平均固含率的脚本,下面介绍怎么使用这个脚本。

使用python脚本 宏

自定义ParaView行为的一种简单但强大的方法是将Python脚本添加为宏。宏只是一个自动脚本,可以通过工具栏中的按钮或菜单栏中的条目调用。

Macros →Add a new macro选择刚才生成的Cal_Solid_holdup.py文件
可以看到Macros多了一个Cal_Solid_holdup宏,双击运行可以直接完成第二节中的操作。

命令行

运行paraview的python脚本需要使用pvpython环境,首先查看节点上的pvpython环境。

$: whereis pvpython
pvpython: /opt/ParaView-5.8.1-MPI-Linux-Python3.7-64bit/bin/pvpython

运行Cal_Solid_holdup.py脚本

 pvpython Cal_Solid_holdup.py
 #报错没关系,会输出结果文件
高级用法

大家都知道python文件可以读取输入参数,我们稍微修改两行代码,可以另外复制一份防止改错。

#coding:utf-8
#加在第一行

import sys
print(sys.argv[1],sys.argv[2])
#sys可以读取命令行输入参数。

# 修改clip高度
# clip1.ClipType.Origin = [0.0, 0.0, 0.05]
clip1.ClipType.Origin = [0.0, 0.0, float(sys.argv[2])]
clip1.ClipType.Normal = [0.0, 0.0, -1.0]

# clip2.ClipType.Origin = [0.0, 0.0, 0.0]
clip2.ClipType.Origin = [0.0, 0.0, float(sys.argv[1])]
clip2.ClipType.Normal = [0.0, 0.0, 1.0]

#修改保存文件名
# save data
# SaveData('Solid_holdup_.csv', proxy=pythonCalculator1)
SaveData('Solid_holdup_'+sys.argv[1]+'_'+sys.argv[2]+'.csv', proxy=pythonCalculator1)

附赠一个脚本,具体解释参考这篇文章 shell脚本 自动改参数

for ((i=0;i<=9;i++));
    do   
    low=`awk 'BEGIN {;printf "%.4fn",'$i'/10 * 0.6 }'`
    high=`awk 'BEGIN {;printf "%.4fn",('$i'+1)/10*0.6 }'`
    pvpython Cal_Solid_holdup1.py  $low $high
    # cat Solid_holdup_1.csv  | awk -F ',' '{if(NR>=1 && NR <=2) print $48}'
    solid_holdup=`cat Solid_holdup_$low'_'$high.csv  | awk -F ',' '{if(NR ==2) print $48}'` 
    echo  $low' : '$solid_holdup
    echo $low' : '$solid_holdup >> solid_holdup.txt
done
cat solid_holdup.txt 

#输出:
#0.0000 : 0.19869
#0.0600 : 0.3005
#0.1200 : 0.2941
#0.1800 : 0.2786
#0.2400 : 0.23015
#0.3000 : 0.10267
#0.3600 : 0.0059612
#0.4200 : 0.00040967
#0.4800 : 0.00012642
#0.5400 : 0
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1017713.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号