Skip to content

abaqus_to_paraview.py 是一款高效、全功能的 Abaqus ODB 到 ParaView VTK 多块(MultiBlock)转换工具,旨在帮助工程师: 快速将有限元仿真结果导入 ParaView 进行可视化分析 支持并行及单线程两种模式,兼顾效率与可调试性 自动升级不兼容的 ODB 文件,降低环境配置门槛 可选生成 JSON 头信息,方便二次开发与自动化流水线 适用于后处理大规模仿真数据、制作动画演示、插件集成等场景。

xusjtuer/abaqus_to_paraview

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

Abaqus ODB 到 ParaView VTK 多块数据转换工具文档

一、概述

abaqus_to_paraview.py 是一款高效、全功能的 Abaqus ODB 到 ParaView VTK 多块(MultiBlock)转换工具,旨在帮助工程师:

  • 快速将有限元仿真结果导入 ParaView 进行可视化分析
  • 支持并行及单线程两种模式,兼顾效率与可调试性
  • 自动升级不兼容的 ODB 文件,降低环境配置门槛
  • 可选生成 JSON 头信息,方便二次开发与自动化流水线

适用于后处理大规模仿真数据、制作动画演示、插件集成等场景。

二、功能特性

核心功能

  1. 全模型数据转换

    • 支持实例级网格数据转换(Instance-Level Meshes)
    • 自动处理装配体(Assembly)中多个部件实例
    • 保留原始单元拓扑结构
  2. 场数据映射

    • 节点数据(PointData):
      • 直接映射Nodal类型数据
      • ELEMENT_NODAL数据自动节点平均
    • 单元数据(CellData):
      • INTEGRATION_POINT数据积分点平均
      • 支持各向异性材料计算结果映射
  3. 时空数据处理

    • 多步骤(Multi-Step)支持
    • 时间序列帧(Time Frames)连续转换
    • 自动计算全局时间轴(用于瞬态分析可视化)
  4. 高阶格式支持

    • 生成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

四、使用方法

1.准备工作

  • 确保已安装 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"

2.命令行执行

# 基本调用:输出 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 文件路径

3.Python 接口示例(嵌入脚本或插件调用)

from abaqus_to_paraview import AbaqusToParaView

converter = AbaqusToParaView(odb_path="model.odb", header=1)
converter.convert(use_multithreading=True)

4.参数详解

参数 类型 默认值 说明
--odb str 必填 指定 ODB 文件绝对路径(支持中文路径)
--header int 0 元数据生成开关:
0=仅生成可视化文件
1=附加生成 JSON 元数据文件

5.典型工作流

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元数据]
Loading

五、输出文件说明

1.数据文件结构

project_dir/
├─ data/
│  ├─ Step1_frame_0000.vtm
│  ├─ Step1_frame_0001.vtm
│  └─ Step2_frame_0000.vtm
├─ model.json
├─ model_all_steps.pvd
└─ model_Step1.pvd

2.文件格式规范

  1. VTM文件
    ParaView MultiBlock数据格式,每个Odb Instance作为独立Block,包含:

    • 变形后网格坐标
    • PointData(节点数据)
    • CellData(单元平均数据)
  2. PVD文件
    ParaView时间序列描述文件,包含:

    • 全局时间戳(跨Step时间累积)
    • 对应VTM文件路径
    • 时间步关联信息
  3. 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"]
            }
          }
        }
      }
    }

六、技术细节

1.数据映射规则

Abaqus数据类型 VTK映射方式 处理算法
Nodal 直接映射 节点坐标叠加位移场
Element Nodal 节点平均 加权平均法
Integration Point 单元平均 Gauss点加权积分
Centroid 直接赋值 单元中心点提取

2.单元类型映射表

Abaqus单元类型 VTK单元类型 节点数
C3D8 VTK_HEXAHEDRON 8
C3D20 VTK_QUADRATIC_HEXAHEDRON 20
S4 VTK_QUAD 4
B31 VTK_LINE 2

3.性能优化

  • 并行架构:采用多进程池(multiprocessing.Pool)实现帧级并行
  • 内存管理:按需加载机制,单帧处理内存占用<2GB
  • I/O优化:异步文件写入与数据压缩(ZLib Level 5)

七、注意事项

  1. 版本兼容性

    • 支持Abaqus 6.14-2024版本ODB
    • ParaView需5.8+版本支持VTK MultiBlock
  2. 常见问题处理
    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)
    • 示例单元数据
  3. 数据精度限制

    • 位移场精度:1e-6 mm
    • 时间戳精度:1e-6 sec
    • 场数据保留6位有效数字

技术支持

联系方式 信息
项目仓库 xusjtuer/abaqus_to_paraview
邮箱 xusjtuer@163.com

更新日期:2025-05-24

About

abaqus_to_paraview.py 是一款高效、全功能的 Abaqus ODB 到 ParaView VTK 多块(MultiBlock)转换工具,旨在帮助工程师: 快速将有限元仿真结果导入 ParaView 进行可视化分析 支持并行及单线程两种模式,兼顾效率与可调试性 自动升级不兼容的 ODB 文件,降低环境配置门槛 可选生成 JSON 头信息,方便二次开发与自动化流水线 适用于后处理大规模仿真数据、制作动画演示、插件集成等场景。

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published