abaqus_to_paraview.py 是一款高效、全功能的 Abaqus ODB 到 ParaView VTK 多块(MultiBlock)转换工具,旨在帮助工程师:
- 快速将有限元仿真结果导入 ParaView 进行可视化分析
- 支持并行及单线程两种模式,兼顾效率与可调试性
- 自动升级不兼容的 ODB 文件,降低环境配置门槛
- 可选生成 JSON 头信息,方便二次开发与自动化流水线
适用于后处理大规模仿真数据、制作动画演示、插件集成等场景。
-
全模型数据转换
- 支持实例级网格数据转换(Instance-Level Meshes)
- 自动处理装配体(Assembly)中多个部件实例
- 保留原始单元拓扑结构
-
场数据映射
- 节点数据(PointData):
- 直接映射Nodal类型数据
- ELEMENT_NODAL数据自动节点平均
- 单元数据(CellData):
- INTEGRATION_POINT数据积分点平均
- 支持各向异性材料计算结果映射
- 节点数据(PointData):
-
时空数据处理
- 多步骤(Multi-Step)支持
- 时间序列帧(Time Frames)连续转换
- 自动计算全局时间轴(用于瞬态分析可视化)
-
高阶格式支持
- 生成VTK MultiBlock结构(.vtm)
- 自动生成PVD动画描述文件
- 可选JSON元数据输出(含步骤/帧/字段信息)
- 自动ODB版本升级机制
- 多线程数据读写优化
- 异常损坏文件检测
- 单元类型智能映射(支持60+ Abaqus单元类型)
- Abaqus 2024+ 的 Python 3.10 环境
- VTK 9.x+ 库(需安装至Python环境)安装过程
1.abaqus python -m ensurepip --upgrade 通过python自带的ensure库给abaqus安装低版本的pip ;
2.abaqus python -m pip --version 查看是否安装了 pip工具和现在的版本;
3.abaqus python -m pip install --upgrade pip 对pip进行升级;
4.abaqus python -m pip install vtk 安装vtk模块
5.abaqus python -m pip list 验证abaqus python安装的库及版本
Microsoft Windows [版本 10.0.22000.2295]
(c) Microsoft Corporation。保留所有权利。
C:\WINDOWS\system32>abaqus python -m ensurepip --upgrade
Looking in links: c:\Users\xusjt\AppData\Local\Temp\tmp9dipijpu
Requirement already satisfied: setuptools in d:\simulia\estproducts\2024\win_b64\tools\smapy\python3.10\lib\site-packages (80.1.0)
Requirement already satisfied: pip in d:\simulia\estproducts\2024\win_b64\tools\smapy\python3.10\lib\site-packages (25.1)
C:\WINDOWS\system32>abaqus python -m pip --version
pip 25.1 from D:\SIMULIA\EstProducts\2024\win_b64\tools\SMApy\python3.10\lib\site-packages\pip (python 3.10)
C:\WINDOWS\system32>abaqus python -m pip install --upgrade pip
Requirement already satisfied: pip in d:\simulia\estproducts\2024\win_b64\tools\smapy\python3.10\lib\site-packages (25.1)
Collecting pip
Using cached pip-25.1.1-py3-none-any.whl.metadata (3.6 kB)
Using cached pip-25.1.1-py3-none-any.whl (1.8 MB)
Installing collected packages: pip
Attempting uninstall: pip
Found existing installation: pip 25.1
Uninstalling pip-25.1:
Successfully uninstalled pip-25.1
WARNING: The scripts pip.exe, pip3.10.exe and pip3.exe are installed in 'D:\SIMULIA\EstProducts\2024\win_b64\tools\SMApy\python3.10\Scripts' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed pip-25.1.1
C:\WINDOWS\system32>abaqus python -m pip install vtk
Requirement already satisfied: vtk in d:\simulia\estproducts\2024\win_b64\tools\smapy\python3.10\lib\site-packages (9.4.2)
Requirement already satisfied: matplotlib>=2.0.0 in d:\simulia\estproducts\2024\win_b64\tools\smapy\python3.10\lib\site-packages (from vtk) (3.7.2)
Requirement already satisfied: contourpy>=1.0.1 in d:\simulia\estproducts\2024\win_b64\tools\smapy\python3.10\lib\site-packages (from matplotlib>=2.0.0->vtk) (1.1.0)
Requirement already satisfied: cycler>=0.10 in d:\simulia\estproducts\2024\win_b64\tools\smapy\python3.10\lib\site-packages (from matplotlib>=2.0.0->vtk) (0.11.0)
Requirement already satisfied: fonttools>=4.22.0 in d:\simulia\estproducts\2024\win_b64\tools\smapy\python3.10\lib\site-packages (from matplotlib>=2.0.0->vtk) (4.42.0)
Requirement already satisfied: kiwisolver>=1.0.1 in d:\simulia\estproducts\2024\win_b64\tools\smapy\python3.10\lib\site-packages (from matplotlib>=2.0.0->vtk) (1.4.4)
Requirement already satisfied: numpy>=1.20 in d:\simulia\estproducts\2024\win_b64\tools\smapy\python3.10\lib\site-packages (from matplotlib>=2.0.0->vtk) (1.22.4)
Requirement already satisfied: packaging>=20.0 in d:\simulia\estproducts\2024\win_b64\tools\smapy\python3.10\lib\site-packages (from matplotlib>=2.0.0->vtk) (23.1)
Requirement already satisfied: pillow>=6.2.0 in d:\simulia\estproducts\2024\win_b64\tools\smapy\python3.10\lib\site-packages (from matplotlib>=2.0.0->vtk) (10.0.0)
Requirement already satisfied: pyparsing<3.1,>=2.3.1 in d:\simulia\estproducts\2024\win_b64\tools\smapy\python3.10\lib\site-packages (from matplotlib>=2.0.0->vtk) (3.0.9)
Requirement already satisfied: python-dateutil>=2.7 in d:\simulia\estproducts\2024\win_b64\tools\smapy\python3.10\lib\site-packages (from matplotlib>=2.0.0->vtk) (2.8.2)
Requirement already satisfied: six>=1.5 in d:\simulia\estproducts\2024\win_b64\tools\smapy\python3.10\lib\site-packages (from python-dateutil>=2.7->matplotlib>=2.0.0->vtk) (1.16.0)
C:\WINDOWS\system32>abaqus python -m pip list
Package Version
----------------- -------
2to3 1.0
contourpy 1.1.0
cycler 0.11.0
debugpy 1.8.14
fonttools 4.42.0
kiwisolver 1.4.4
matplotlib 3.7.2
mypy 1.15.0
mypy_extensions 1.1.0
numpy 1.22.4
packaging 23.1
Pillow 10.0.0
pip 25.1.1
ptvsd 4.3.2
pyparsing 3.0.9
python-dateutil 2.8.2
pywin32 304
scipy 1.11.1
setuptools 80.1.0
six 1.16.0
sympy 1.12
tomli 2.2.1
typing_extensions 4.13.2
vtk 9.4.2
wheel 0.45.1
C:\WINDOWS\system32>[Abaqus]
AbaqusLib=D:\SIMULIA\EstProducts\2024\win_b64\code\python3.10\lib
AbaqusBat=D:\SIMULIA\Commands\abaqus.bat-
确保已安装 Abaqus 与对应 SMAPython 环境。
-
安装 Python 库:
pip install vtk numpy
-
编辑
utils/plugin_config.py,设置:AbaqusLib = r"D:\SIMULIA\EstProducts\2024\win_b64\code\python3.10\lib" AbaqusBat = r"D:\SIMULIA\Commands\abaqus.bat"
# 基本调用:输出 VTK 文件
abaqus python "/path/to/abaqus_to_paraview.py" --header 0 --odb "/path/to/model.odb"
# 同时生成 JSON 头信息
abaqus python "/path/to/abaqus_to_paraview.py" --header 1 --odb "/path/to/model.odb"--header:1 生成.json;0 仅输出.vtm/.pvd--odb:指定 ODB 文件路径
from abaqus_to_paraview import AbaqusToParaView
converter = AbaqusToParaView(odb_path="model.odb", header=1)
converter.convert(use_multithreading=True)| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
--odb |
str | 必填 | 指定 ODB 文件绝对路径(支持中文路径) |
--header |
int | 0 | 元数据生成开关: 0=仅生成可视化文件 1=附加生成 JSON 元数据文件 |
graph TD
A[原始ODB] --> B{版本检查}
B -->|v<2024| C[自动升级]
B -->|v>=2024| D[直接读取]
D --> E[多线程数据提取]
E --> F[VTK数据映射]
F --> G[写VTK/PVD文件]
G --> H[生成JSON元数据]
project_dir/
├─ data/
│ ├─ Step1_frame_0000.vtm
│ ├─ Step1_frame_0001.vtm
│ └─ Step2_frame_0000.vtm
├─ model.json
├─ model_all_steps.pvd
└─ model_Step1.pvd-
VTM文件
ParaView MultiBlock数据格式,每个Odb Instance作为独立Block,包含:- 变形后网格坐标
- PointData(节点数据)
- CellData(单元平均数据)
-
PVD文件
ParaView时间序列描述文件,包含:- 全局时间戳(跨Step时间累积)
- 对应VTM文件路径
- 时间步关联信息
-
JSON元数据
结构化存储分析信息:{ "steps": { "Step-1": { "frameCount": 50, "frames": [0.0, 0.1, ..., 5.0] } }, "fields": { "Step-1": { "0": { "PART-1-1": { "PointData": ["U", "TEMP"], "CellData": ["S", "PE"] } } } } }
| Abaqus数据类型 | VTK映射方式 | 处理算法 |
|---|---|---|
| Nodal | 直接映射 | 节点坐标叠加位移场 |
| Element Nodal | 节点平均 | 加权平均法 |
| Integration Point | 单元平均 | Gauss点加权积分 |
| Centroid | 直接赋值 | 单元中心点提取 |
| Abaqus单元类型 | VTK单元类型 | 节点数 |
|---|---|---|
| C3D8 | VTK_HEXAHEDRON | 8 |
| C3D20 | VTK_QUADRATIC_HEXAHEDRON | 20 |
| S4 | VTK_QUAD | 4 |
| B31 | VTK_LINE | 2 |
- 并行架构:采用多进程池(multiprocessing.Pool)实现帧级并行
- 内存管理:按需加载机制,单帧处理内存占用<2GB
- I/O优化:异步文件写入与数据压缩(ZLib Level 5)
-
版本兼容性
- 支持Abaqus 6.14-2024版本ODB
- ParaView需5.8+版本支持VTK MultiBlock
-
常见问题处理
Q: 出现"Corrupted ODB"错误
A: 执行以下诊断步骤:from odbAccess import * try: with openOdb('file.odb') as odb: print("ODB header:", odb.header) except Exception as e: print("Error details:", str(e))
Q: 部分单元显示异常
A: 检查单元类型是否在映射表中,或提交issue附上:- 单元类型(Element Type)
- 单元连接数(Connectivity Number)
- 示例单元数据
-
数据精度限制
- 位移场精度:1e-6 mm
- 时间戳精度:1e-6 sec
- 场数据保留6位有效数字
| 联系方式 | 信息 |
|---|---|
| 项目仓库 | xusjtuer/abaqus_to_paraview |
| 邮箱 | xusjtuer@163.com |
更新日期:2025-05-24