Tecplot — CAE用语解释
Tecplot
我想把CFD的结果图放在论文里,但ParaView出来的图效果不太好…Tecplot怎么样?
Tecplot的理论基础 — 基本概念、支配方程
Tecplot的作用与可视化的物理基础
Tecplot到底是干什么用的?它不是像CFD求解器那样用来计算的吧?
没错,Tecplot不是求解器。它是一个后处理器,也就是专门用来"可视化"和"分析"计算结果的软件。比如说,你用Fluent或OpenFOAM计算得到的压力、速度等海量数据(几百万到几亿个网格点的数据),Tecplot可以把这些数据转换成人能理解的等高线图、矢量图、流线、等值面等等。它就像把物理量的空间分布转换成人能直观理解的"翻译机"。
可视化的时候,不是简单地涂颜色,背后肯定在做某种计算吧?
问得好。关键是"插值"和"导出量计算"。比如,在非结构网格的数据上画等高线,你需要对每个单元(四面体或六面体)内的物理量变化做一个假设来插值。线性插值是基础,也可以用高阶插值。此外,从原始数据计算出新的物理量。比如从速度矢量 $\vec{u} = (u, v, w)$ 计算涡度 $\vec{\omega} = \nabla \times \vec{u}$ 或Q准则,或者计算壁面剪应力。这些都是可视化前的数值处理。
画流线时,怎样追踪粒子的轨迹?计算量大吗?
流线的计算其实是常微分方程数值积分问题。简单说,从某一点出发,沿着该点的速度矢量方向走一小步,求新点的速度,再走一步…这样反复。这个过程用4阶龙格-库塔法等数值方法求解。如果粒子数有1万个,计算量确实会很大。特别是对于非定常数据,要针对每个时间步追踪,计算时间和内存占用会非常庞大。Tecplot 360 EX可以用并行处理来分散这个负荷。
Tecplot的数值计算手法 — 数据格式与处理算法
数据结构与可视化算法
Tecplot能读哪些数据格式?不同求解器的输出格式好像都不一样…
原生支持的格式很多。结构网格用PLOT3D格式,非结构网格可以用CGNS、Abaqus(.inp)、Fluent(.cas、.dat)、ANSYS CFX(.res)、OpenFOAM的案例目录等等。还能直接读文本文件、CSV和二进制数据。不过,读非结构网格数据时,单元的连接信息(哪些节点构成哪个单元)必须定义正确,否则会出错。这是读取失败的主要原因。
画等值面时,比如说"压力=101325 Pa的那个面",数据里肯定没有恰好等于那个值的点。怎样生成那个面的?
这用的是"行进立方体法"等算法。对每个单元(想象成一个立方体单元),检查它8个顶点的值,看要找的等值(101325 Pa)是否在最大值和最小值之间。如果在的话,用线性插值找出等值穿过单元各条边的位置,然后把这些点连接起来形成小三角形(或多边形)面片。对所有单元都这样做,再把面片连接起来,就生成了一个表面不太光滑但是连续的等值面。
数据很大时,操作会很卡。什么样的处理最耗资源?
主要有三块。第一,非结构网格的等高线和等值面绘制。每个单元都要做插值和几何生成。第二,粒子追踪(流线等)。如上所述,这是数值积分的反复计算。第三,数据的子集化("区域"的创建)和新物理量计算(涡度、应力张量不变量等)。比如,1000万个单元的数据要计算Q准则,要在每个单元做张量运算,这会大量消耗CPU和内存带宽。对策是只加载必要最小的区域,或者对数据做间隔采样。
Tecplot的实务应用 — 工作流程与检查清单
有效可视化的步骤
用Tecplot开始分析时,最初应该检查什么?我老是想直接做漂亮的图,结果经常失败。
首先要"数据健全性检查"。加载数据后,打开菜单`Analyze > Zone Info`,确认区域名、单元数、节点数、变量名及其单位。看看变量名是否还是`Var1`这样的。然后`Plot > Mesh`显示网格,确认几何是否符合预期(有没有缺失、有没有变形)。尤其是导入的CAD数据,表面网格可能很粗糙,或者有重复面。基本检查做不好,后面就会信以为真错误的可视化结果。
想做学会发表和论文用的图。有什么诀窍吗?自己做的图总是看着不够专业。
有几条实用的规则。第一,色图要合适。连续量用`Viridis`、`Plasma`这样知觉均匀的色图,不要用`Rainbow`。第二,等高线数量不要太多,要通过重要的值。第三,文字大小和字体。图里的标签和图例,打印出来要能读。用`Times New Roman`或`Arial`这样的标准字体。Tecplot的"样式"功能可以保存这些设置,给所有图应用同样的样式,就能做出一致的资料。
想把非定常计算结果做成动画,但文件很多,太麻烦了。有高效的方法吗?
最好的办法是把所有时间步的数据存成一个`.plt`文件,也就是"瞬态数据"格式。很多求解器的输出都能这样读。要是有1000个单独文件,可以用Tecplot 360 EX的"Data Loader"功能,或者用PyTecplot的批处理脚本。制作动画时要注意分辨率和帧率。预览用640x480、30fps就够了。学会发表用1920x1080、15fps。全分辨率出图的话会占几十GB的磁盘空间,要注意。
Tecplot的软件对比 — 与其他工具的区别
市场中Tecplot的位置
可视化工具还有ParaView和Ensight。Tecplot的优势具体在哪?
最大的优势是"专业针对工程数据分析"。ParaView是通用科学可视化工具,医疗影像、气象数据都能处理,但Tecplot就是为CFD和结构分析的工程师们设计的。比如,直接用积分计算翼型的升阻力系数,在特定位置绘制边界层速度分布,或者做多个计算案例的对比和"Comparative Plot"可视化。还有,PyTecplot脚本语言的自动化功能很强,能批量处理数百个案例的结果图。
花钱买的Tecplot 360 EX和免费的ParaView,从性价比来看怎么选?
这取决于组织规模和用途。大学实验室做基础可视化和可视化算法研究,ParaView足够了。但是,航空和汽车制造企业的开发部门,每天需要几十个人生成标准化报告图,Tecplot的投资回报率就很高。因为有标准化工作流、模板、技术支持,最重要的是"时间节省"。有汽车制造商的案例说,采用Tecplot模板和自动化脚本后,每个工程师的出图时间从每周8小时降到1小时。许可证费很快就收回了。
听说Tecplot还有个"Chorus"产品。跟360 EX什么区别?
Tecplot Chorus的定位不一样,是个"设计空间探索和数据管理工具"。360 EX是对单个仿真数据深度可视化和分析,Chorus是管理和对比几百到几千个设计参数研究(DOE)的结果。比如说,翼型的迎角、襟翼角、马赫数等变化100个案例的计算,全部加载到Chorus里,分析哪个设计参数对升阻比影响最大,或者可视化帕累托最优边界。360 EX是"深度分析",Chorus是"宽度比较",这样理解就对了。
Tecplot的故障排除 — 常见错误和对策
实运用中遇到的问题与解决方案
读大数据时,经常因为"内存不足"而崩溃。怎么办?
首先确认你用的是64位版Tecplot 360 EX。32位版有4GB内存地址空间限制。还不够的话,必须对数据"间隔采样"。不要一次读全部数据,用`Data > Alter > Specify Equations`写个公式对网格点等间隔采样。比如3维数据可以写`X = X[::2, ::2, ::2]`这样跳过索引。最初用粗数据确定可视化方案,最后的图才用全数据。另外,用NVMe SSD代替普通SSD,数据交换会快得多,体感速度会改善。
等高线图出现了沿单元边界的阶梯状条纹(banding)。这是网格太粗的原因吗?
原因是显示模式设成了"Discrete"。默认情况下,每个单元用一个值(单元中心值)作为代表,整个单元用单一颜色填充,这就是"Discrete"模式。要得到光滑的等高线,打开该变量的"Contour Details"对话框,把"Type"改成"Continuous"或"Linear Continuous"。这样的话,单元边界处值会插值,颜色会平滑过渡。Linear Continuous计算负荷会稍大一点。非结构网格还可以试试"Smooth"选项。
想把已经做好的图的设置(颜色、视点等)完全一样地用到另一个数据集,但一个一个手动设置太麻烦。
这就是Tecplot的"样式文件(.sty)"和"布局文件(.lay)"的用武之地。菜单`File > Save Style`能把现在的绘图的全部属性(色图、等高线水平、光照、视点等)保存到.sty文件。新数据加载后,`File > Load Style`应用那个文件就可以了。更进一步,还能把多个帧的构成和文本标签这样的完整布局保存为.lay文件。从PyTecplot脚本里批量调用这些文件,就能每天自动生成同一格式的报告图。
矢量图的箭头太多了,整张图都是黑的,看不清。有办法做清楚的矢量图吗?
矢量可视化的基本就是"间隔显示"和"跳过"。第一,限制显示矢量的区域为网格粗糙的子集。第二,在矢量属性对话框设"Skip"。设定X和Y方向隔多少点显示一个箭头。比如Skip设成(5,5),就每隔5个点显示一个箭头,箭头数就变成1/25。另外,箭头大小可以按速度绝对值缩放,但要设好最大值,不然部分高速区的箭头会巨大。可以暂时改成`Uniform`大小确认位置,然后再改回`Magnitude Based`调整。
相关话题
意义
更详细
错误