首页/文章/ 详情

续上篇!压力载荷仿真全流程自动化,3段脚本搞定Mechanical瞬态时域载荷导入

6月前浏览1808

 

大家好,我是小郭老师,硕士毕业于中科院,专注于运用 Python 深度集成 ANSYS 进行工程数值计算与仿真自动化开发,精通基于 Python 实现 ANSYS Workbench 众多模块的全流程脚本驱动,并具备将复杂仿真流程封装为高效、可复用软件工具的专业能力。


上一篇文章《全网独家!ANSYS Mechanical 导入载荷的隐藏命令,小郭老师替你找到了》,详细介绍了 Mechanical 中导入载荷的隐藏 API 命令。

今天接着上篇,继续给大家分享两个高频实战技巧:① 如何用脚本批量导入 CSV 文件到 External Data 模块;② 如何在 Mechanical 中自动批量配置导入压力载荷。  看完直接抄作业就能用!

一、需求描述

(一)工程背景

image.png

这是一个典型的海洋工程问题——一根垂直的钢制圆柱形立管固定在海床,受海面周期性波浪拍打。我们需要分析 1~5 秒内波浪扫过立管时的压力演化过程,进而得到立管的瞬态结构响应。

几何模型参数如下:

参数
数值
说明
立管外径 D
0.5 m
典型浅海立管尺寸
壁厚 t
0.02 m
钢制管壁
立管高度 H
10 m
从海床到海面
水深 d
10 m
满水深(底端固支)
材料
结构钢
E=200 GPa,ν=0.3,ρ=7850 kg/m³
边界条件
底端固支,顶端自由
Fixed-Free

(二)压力载荷来源

波浪压力采用线性 Airy 波浪理论计算,立管外表面某点的动压公式为:

其中波数由色散关系迭代求解。我们分别计算 t = 1s、2s、3s、4s、5s 共 5 个时刻的三维压力分布,每个时刻生成一个 CSV 文件。

(三)痛点在哪?

5 个 CSV 文件,手动操作的话要做什么?

1、在 Workbench 里逐一拖入 External Data,每个文件都要手动配置 X/Y/Z 坐标列和压力列的类型,一共要点 20 次下拉菜单;

2、打开 Mechanical,进入导入载荷的 Worksheet 表格,手动填写每行的数据标识符、对应时间、缩放系数;

2、还要单独设置分析时间步,确保每步结束时间和载荷时刻一一对应。

5 个文件尚且还好,如果是 50 个时刻呢?手动操作不仅耗时,一旦某列配置错了,整个仿真结果全部作废。

用脚本全部自动化,才是正确打开方式。

二、整体思路与完整代码

(一)三步走流程

整个自动化流程分三步,逻辑非常清晰:

Step 1:在 Python 编辑器(PyCharm 等)中运行脚本,根据 Airy 波浪理论批量生成各时刻的三维压力 CSV 文件;

Step 2:在 ANSYS Workbench 的命令窗口运行脚本,自动创建 External Data 系统和 Transient Structural 系统,批量导入 CSV 并配置各列的数据类型;

Step 3:在 ANSYS Mechanical 的 Automation 面板中运行脚本,自动设置分析时间步,并批量配置导入压力载荷的 Worksheet 表格,触发载荷导入。

image.png

(二)Step 1:Python 批量生成压力 CSV 文件

完整代码

code-1774763432938.png


核心代码解析

色散关系求波数

波数 k无法直接解析求解,需要用 scipy.optimize.fsolve 对色散方程进行迭代求解:

code-1774763445876.png

这里初始值取深水近似 ,收敛速度很快。

表面网格生成

立管外表面用极坐标参数化,圆周方向均匀取 36 个点(每 10° 一个),高度方向取 21 个点:

1.png

注意 endpoint=False——圆周方向不取终点,避免 0° 和 360° 重复。

压力计算与输出

每个时刻单独计算压力并写成 CSV,文件命名为 pressure_t01s.csv、pressure_t02s.csv……方便后续脚本通过正则表达式自动提取时间信息:

1.png

这里同时叠加了静水压 P_hydro,更贴近实际工况。如果只需要动态波动分量,删掉 P_hydro 那一行即可。


(三)Step 2:Workbench 脚本批量导入 External Data

完整代码

2.png

核心代码解析

创建系统并建立连接

脚本先创建 External Data 系统和 Transient Structural 系统,再通过 TransferData 建立两者的数据传递关系——这一步相当于手动在 Workbench 界面里把 External Data 的输出端口拖到 Transient Structural 的 Setup 上:

3.png

批量导入 CSV 并配置列类型

这是脚本的核心循环。每个 CSV 文件调用一次 AddDataFile,再分别对 4 列数据调用 SetColumnDataType 指定类型。

这里有一个容易踩的坑:列名不是从 0 开始单独计数的,而是全局累计偏移。第 1 个文件的列名是 ExternalLoadColumnData(第0列)、ExternalLoadColumnData 1、ExternalLoadColumnData 2、ExternalLoadColumnData 3;第 2 个文件紧接着从 ExternalLoadColumnData 4 开始,以此类推。所以偏移量要用 i * 4 计算:

4.png

文件标识符命名规则

每个文件的标识符格式为 t01s、t02s……压力列的完整标识符为 t01s:p。这个命名是后续 Mechanical 脚本定位数据的唯一依据,必须保持一致。


(四)Step 3:Mechanical 脚本批量配置导入压力载荷

完整代码

5.png

核心代码解析

自动设置分析时间步

setup_anxalysis_time_steps 函数根据传入的时间值列表,自动设置分析步数和每步的结束时间。这里有两个细节值得注意:

一是步编号从 1 开始,不是从 0 开始:

5.png

二是每步都独立开启自动时间步控制,避免 ANSYS 用全局设置覆盖单步配置:

下载.png    

批量配置 Worksheet 表格

configure_imported_load 函数是本篇的核心。它先添加导入压力载荷对象,再通过 GetTableByName("") 获取 Worksheet 表格,逐行填写数据标识符、时间值和缩放系数:

下载 (1).png

注意第一行和后续行的处理方式不同——第一行用 Table[0] 直接获取,后续行必须先 new 一个 WorksheetRow 再 Add 进去,否则会报错。

最后调用 ImportLoad() 触发实际数据导入,这一步不能省,否则配置了也不会生效。

三、运行效果

运行三段脚本后,ANSYS 会自动完成以下工作:

1、Python编辑器中自动生成不同时刻下的压力载荷文件

image.pngimage.png

2、Workbench 中生成 External Data + Transient Structural 联动系统,5 个 CSV 文件全部导入并完成列类型配置;

image.png
image.png

3、Mechanical 中自动创建 5 个分析步,每步结束时间与 CSV 文件时刻精确对应,且导入压力载荷的 Worksheet 表格自动填写完毕,触发载荷导入。

image.png

原本手动操作至少需要 30 分钟的配置工作,现在脚本运行不到 1 分钟全部搞定,文件数量越多,效率优势越明显。

四、结语

其实 ANSYS 二次开发不用追求"高大上",从实际工程需求出发,用几行代码解决一个具体痛点,就是最实用的开发。

本文从海洋立管波浪载荷仿真这个真实工程场景出发,把"批量生成CSV→批量导入External Data→批量配置导入载荷"的全流程自动化拆解得清清楚楚。代码结构清晰,只需修改配置区域的路径和参数,就能直接移植到自己的项目中使用。

如果你也在为 External Data 批量导入或 Mechanical 导入载荷配置而头疼,欢迎在评论区留言,后续会持续分享更多 ANSYS 二次开发实战技巧!


点击立即学习《ANSYS Workbench & Mechanical 企业级二次开发程序与 Python 应用入门进阶》,掌握 ANSYS Workbench & Mechanical 的脚本自动化开发能力。

本课程从基础脚本开发到多工况批量计算的自动化实现,手把手教你用 Python 打通"仿真流程自动化 - 多工况批量计算"全链路,让"重复仿真工作自动化、复杂工况高效计算"从想法变成日常。

我还为付费用户提供 VIP 群进行交流、答疑服务、持续加餐内容、提供定制化培训和咨询服务、仿真人才库高薪内推就业,仿真秀还提供奖学金、学完此课程,推荐学习者报名参加工程仿真技术(CAE 分析职业能力等级评价证书)。

image-20251207235313-stbdv8t.png

 

MechanicalWorkbench结构基础静力学瞬态动力学显式动力学流-固&热耦合二次开发代码&命令通用
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2026-03-30
最近编辑:6月前
小郭老师
硕士 小郭老师,精通ANSYS开发
获赞 162粉丝 46文章 35课程 2
点赞
收藏
作者推荐
未登录
1条评论
壹玖柒贰
帮帮被毕设折磨的大学生吧求求了
6月前
博主您好!非常感谢您的分享。可不可以问一下载荷文件的时间步不是完全一致的情况,如何用命令流的方法批量导入?比如我的CSV文件前三十个时间步长为1s,后三十个时间步长为3s,这种情况下该如何处理?可以分享一下经验吗?万分感谢!!!
回复 3条回复
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈