首页/文章/ 详情

Ansys Mechanical物理场结果转为vtk及可视化

4小时前浏览12

1 背景:我们为何需要转换仿真数据?

想象一下,你刚刚完成了一项复杂的仿真研究,使用了像试验设计(DOE)这样的方法,生成了成百上千个模拟结果。这些数据宝藏蕴含着巨大的潜力,可以用来:

  • 训练一个快速的降阶模型(ROM)来进行实时预测。

  • 构建一个能与物理世界同步的数字孪生体。

  • 前端页面云图可视化展示。

  • 直接利用Python中的AI库(如TensorFlow/PyTorch)进行数据挖掘和智能分析。

但当你兴冲冲地准备处理这些数据时,却遇到了一个常见的“拦路虎”:Ansys等专业仿真软件生成的结果文件(如.rst, .rth, .odb)是特殊的二进制格式。

你可以这样理解:这种格式就像是软件为自己的读写速度而设计的“内部语言”,效率虽高,但外界却“听不懂”。这导致了数据孤岛——你的宝贵数据被锁在这些文件里,无法被Python、MATLAB等主流数据分析工具直接读取和使用。

2 目的:本教程要做什么?

那么,如何打破这个壁垒,将数据从“专用格式”解放到“通用世界”呢?这就是本文的核心目标。

我们将手把手教你,如何利用Ansys官方推出的开源Python工具包——PyAnsys,轻松地将你的.rst和.rth结果文件,转换为通用的VTK格式。

为什么选择VTK格式?

VTK是科学计算可视化领域的“通用语言”。它能完美保留模型的三维网格结构和物理场数据的空间分布,可以被ParaView等众多可视化软件直接打开,也极易被各种编程环境(包括Python)读取,用于后续分析。

我们将使用的“神器”:PyAnsys生态。

简单来说,PyAnsys是Ansys官方用Python打造的一套“自动化控制工具”,它让你能用Python脚本操控几乎所有Ansys产品的工作流。在本教程中,我们将聚焦于其中的两个核心模块:

  • PyDPF-Core:这是数据处理的基础引擎。它非常灵活,可以直接读取和操作Ansys的结果数据,是我们进行格式转换的基石。

  • PyDPF-Post:这是建立在PyDPF-Core之上的 “快捷后处理工具包”。它提供了更简单、直观的命令来提取你关心的结果(比如最大应力、平均温度等),让代码写起来更轻松。

通过本文,你将不仅学会一个数据转换的技巧,更能理解如何利用PyAnsys这个强大的生态,将仿真工作流与现代化的数据科学工具链无缝连接起来。

3 ANSYS Mechanical结果数据导出文本格式

以下使用PyDPF-core/post读取Mechanical的rth及rst结果数据,并导出为vtk文件的示例(需要安装pyansys库,Ansys版本>=2021R1)。

通过Ansys Workbench(2023R1)软件建立压力容器热固耦合分析,获得温度及结构结果。

Ansys计算结果云图如下:

 

总变形云图

等效应力云图

温度云图

通过pyansys库将上述三个物理场结果导出为一个vtk文件,并通过pyvista库进行绘制,如下:

部分代码如下:


# ----- 将rth及rst结果导出为vtk文件 -----

from ansys.dpf import post

import os

from ansys.dpf import core

 

os.chdir(r'D:\6. my\Ansys Mechanical to vtk')   # 切换当前路径

rth_file = r'case_files\dp0\SYS\MECH\file.rth'

rst_file = r'case_files\dp0\SYS-1\MECH\file.rst'

 

# 加载结果文件,并获取结果

solution_rth = post.load_solution(rth_file)

solution_rst = post.load_solution(rst_file)

temperature_scalar = solution_rth.temperature().scalar              # 温度

displacement_norm = solution_rst.displacement().norm                # 整体变形

stress_von_mises = solution_rst.stress().von_mises                  # 等效应力

……

 

# ---- 绘制vtk(建议与上方的代码分开执行) -----

import pyvista as pv

import numpy as np

mesh = pv.read(r"Case_disp_mises_temp.vtk")

from matplotlib.colors import LinearSegmentedColormap

colors = [

    [0,0,255],[0,93,255],[0,185,255],[0,255,232],

    [0,255,139],[0,255,46],[46,255,0],[139,255,0],

    [232,255,0],[255,185,0],[255,93,0],[255,0,0]

]

colors = np.array(colors)/255.0

custom_cmap = LinearSegmentedColormap.from_list('custom_cmap', colors, N=12)

……

pl = pv.Plotter(shape=(1,3), window_size=(2000,800), off_screen=True)

pl.subplot(0,0)

pl.add_mesh(mesh.copy(), scalars = '2_total_deformation_(mm)', **dargs)

pl.add_scalar_bar(title='total_deformation(mm)',n_labels=10, n_colors=9, fmt='%.4e', vertical=True, width=0.2,

                  position_x=0.05, position_y=0.5, font_family='times')

add_axes(pl)

pl.camera_position = custom_positon

pl.screenshot('results.png')

下面的内容为付费内容,购买后解锁。

内容简介:通过pyansys库将ansys workbench的rth、rst结果文件中的场数据转为vtk文件,并使用pyvista库进行可视化展示,附件给出了相关代码及workbench案例文件。

MechanicalWorkbench静力学生热传热二次开发代码&命令python
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-10-10
最近编辑:4小时前
TreatLee
博士 | CAE产品仿真经... catia abaqus isight Tosca
获赞 39粉丝 91文章 9课程 9
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈