v2-68fb3d5b4c9ca0de214dd47db0bb629e_1440w.jpg?source=172ae18b

Tecplot 在2017版本之后加入了Python模块PyTecplot,可以通过编写Python脚本实现与GUI界面相同的操作,从而实现更加便捷的批处理及功能扩展。本文根据Tecplot官方指引详细介绍该模块的安装方法及初步应用。

安装准备

  • 安装Tecplot 360 2017 R1以后版本,并可正常运行。
  • 安装Python 2.7 或3.6以后版本(仅支持64位)及依赖模块(推荐用pip安装):
    • 必备模块
      • six
      • pyzmq
      • protobuf
      • future(仅Python 2.7)
      • contextlib2(仅Python 2.7)
      • enum34(仅Python 2.7)
    • 可选模块
      • numpy(推荐安装)
      • ipython
      • pillow
      • flatbuffers

安装PyTecplot模块

  • Windows

通pip进行安装:

python -m pip install pytecplot

通过本地安装包:

pytecplot​pypi.org
v2-a9769da02536e85b74b5c7edf64a37b4_ipico.jpg

下载后移到Tecplot安装目录下并运行:

cd "C:Program FilesTecplotTecplot 360 EX [VERSION]pytecplot"
python -m pip install .

使用批处理模式时运行Python脚本需要对环境变量进行设置,从而PyTecplot可以找到Tecplot的动态库。如果系统PATH列表中没有Tecplot bin文件夹的路径,则需要手动添加。

通过执行helloworld.py检查是否安装成功(代码见下文)。

  • Linux

通pip进行安装:

pip install pytecplot

通过本地安装包(下载链接同上),下载后移到Tecplot安装目录下并运行:

cd /path/to/tecplot360/pytecplot
pip install .

使用批处理模式运行Python脚本同样需要对环境变量进行设置,将tecplot路径加到PATH中:

eval `/path/to/tecplot360/bin/tec360-env [options]`

通过执行helloworld.py检查是否安装成功(代码见下文)。

  • Mac OSX

通过pip进行安装:

pip install pytecplot

通过本地安装包(下载链接同上),下载后移到Tecplot安装目录下并运行:

cd "/Applications/Tecplot 360 EX [VERSION]/pytecplot"
python -m pip install .

安装后同样需要设置环境变量,将tecplot路径加到PATH中:

eval `"/Applications/Tecplot 360 EX [VERSION]/bin/tec360-env"`

以上步骤完成后应该可以正常运行python脚本,可通过helloworld.py(见下文)进行测试。但有时会提示No module named tecplot,此时可采用另一种方法添加环境变量:

export DYLD_LIBRARY_PATH="/Applications/Tecplot.../Contents/MacOS"

#注意:在通过Tab键进行补全路径时,由于Tecplot路径中包含空格,OS系统会在空格前自动添加转义字符“”,这会导致仍然找不到正确的Tecplot位置,因此不要包含“”。

在完成上述步骤后如果仍然无法正确运行hello world.py,则可能是由于MAC OS的System Integrity Protection(SIP)系统拦截了对环境变量的修改,可以通过如下命令进行测试:

export DYLD_LIBRARY_PATH='test'
/usr/bin/python -c 'import os;print("DYLD_LIBRARY_PATH" in os.environ)'

如果返回True则表明PATH可以被正常修改,如果返回False则表明对PATH的修改被拦截,可以通过如下方法关闭SIP:

  • 重启Mac;
  • 在系统启动前按Command+R直到出现;
  • 在上方的工具栏中选择Terminal,输入csrutil disable并执行;
  • 重启Mac。
  • 正常启动后可通过如下命令检查SIP状态:
csrutil status

通过以上步骤基本可以解决No module named tecplot的问题。

PyTecplot的应用

采用PyTecplot模块进行数据处理时有两种模式:批处理(batch)模式和交互模式。二者均可以实现PyTecplot的功能,其区别如下:

  • 批处理(batch)模式

批处理模式直接与Tecplot内部引擎进行交互,从而实现快速的批处理,即用户在运行脚本后只会得到相应的输出结果,而无需启动GUI界面。

  • 交互模式

交互模式可以在进行批处理的同时与GUI界面通过TecUtil Server插件进行交互,每一步都可以在GUI界面中进行实时显示,但运行速度会受较大影响。交互模式启动方法:

在Tecplot GUI界面中点击Scripting -> PyTecplot Connections...,勾选Accept connections; 并在Python脚本中调用tecplot.session.connect()方法。这样在运行Python脚本时将会于GUI界面进行命令交互。

v2-598577c0f2fafe807c97806ad91666ae_b.jpg

Python脚本首先可以通过手动编写的方法获得,下面为Tecplot官方提供的helloworld.py测试脚本:

import logging
logging.basicConfig(level=logging.DEBUG)

import tecplot

# Run this script with "-c" to connect to Tecplot 360 on port 7600
# To enable connections in Tecplot 360, click on:
#   "Scripting" -> "PyTecplot Connections..." -> "Accept connections"
import sys
if '-c' in sys.argv:
    tecplot.session.connect()

tecplot.new_layout()

frame = tecplot.active_frame()
frame.add_text('Hello, World!', position=(36, 50), size=34)
tecplot.export.save_png('hello_world.png', 600, supersample=3)

通过执行该脚本可以输出一个png图片( 如果通过批处理模式运行,只会输出该图片;如果通过交互模式运行,则可以在GUI界面中看到包含“Hello,World!”的frame)。

v2-722bc654e1001b7ebc9d0d449d19997e_b.jpg

PyTecplot的另一种常见应用是在Tecplot 360 GUI界面中录制python脚本,记录下GUI界面中的后处理操作,然后将该脚本用于相似计算结果的批量处理。在GUI界面中启动录制Python脚本的方法与录制macro宏命令相似,在Scripting下选择Record PyTecplot。录制完成后会生成.py文件,通过执行该脚本可以实现:

  • 重复GUI中的相同操作
  • 修改其中的一些步骤,比如通过修改读入的文件名实现批处理等
  • 修改一些参数,比如修改云图变量、曲线坐标范围等
  • 增删一些操作,比如增加输出某个变量的云图等
  • ..........

参考资料

[1]Tecplot Inc., PyTecplot: Tecplot 360 Python Library, PyTecplot: Tecplot 360 Python Library.

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐