在 ANSYS 中输出刚度矩阵,主要通过 APDL 命令 或 Workbench 配合 APDL 指令 实现。根据当前主流方法和权威资料,推荐使用 HBMAT 命令 或 *DMAT/*SMAT + *PRINT 方法,二者均能有效提取刚度矩阵,并支持后续在 MATLAB 或 Python 中处理。
核心方法概览
HBMAT 命令法:导出为 Harwell-Boeing (HB) 格式,适用于稀疏矩阵,跨平台兼容性好,推荐用于后续 MATLAB/Python 分析
*DMAT / *SMAT + *PRINT 法:直接从 .full 文件读取并导出为文本文件(如 .txt),操作简单,适合快速查看或导入 MATLAB
GUI 方法:适用于初学者,但功能有限,不推荐用于自动化或批量处理
推荐操作步骤(以 ANSYS Workbench 为例)
适用于静力学、模态等分析类型,目标是提取总刚度矩阵(已考虑边界条件)。
求解前设置(防止 .full 文件被删除):在左侧树形菜单中,右键 Analysis Settings → Details。
将 Delete Intermediate Files 设为 No
若使用分布式求解(多核),建议取消勾选 Distributed,避免生成多个 .full 文件
插入 APDL 指令(在 Solution 下):apdl
! 提取总刚度矩阵(稠密格式)
*DMAT, KmatrixF, D, import, full, file.full, STIFF
*PRINT, KmatrixF, Kdense.txt
! 提取总刚度矩阵(稀疏格式,推荐)
*SMAT, KmatrixS, D, import, full, file.full, STIFF
*PRINT, KmatrixS, Ksparse.txt
若需质量矩阵,将 STIFF 改为 MASS 即可
求解并获取文件:点击 Solve 运行分析。
求解完成后,右键 Solution → Open Solver Files Directory。
在该目录下找到 Kdense.txt 或 Ksparse.txt,即为刚度矩阵文件
HBMAT 命令法(适用于高级用户)
若需导出为标准 HB 格式以便在 MATLAB 中高效处理:apdl
/AUX
FILE, hbfile, full ! 指定 .full 文件
HBMAT, mystiff, txt, , ASCII, STIFF, YES ! 导出刚度矩阵为 ASCII 文本
FINISH
生成的 mystiff.txt 文件包含:文件头(描述信息)
矩阵维度、非零元数量等元数据
列指针、行索引、非零值(按列存储)
可使用 MATLAB 脚本(如 Transformer.m 或开源函数 hb_to_msm.m)将其还原为稀疏矩阵
MATLAB 中读取 HB 格式刚度矩阵
参考以下资源获取现成脚本:Harwell-Boeing 格式解析脚本(GitHub)
CSDN 博客:HB 格式转 MATLAB 稀疏矩阵
注意事项
边界条件处理:导出的刚度矩阵已自动消除约束自由度,因此是非奇异、满秩的
稀疏性:结构刚度矩阵高度稀疏,切勿直接用 full() 转为稠密矩阵,否则内存爆炸
二阶单元限制:部分 PyAnsys 方法不支持二阶单元
Workbench 默认删除 .full 文件:务必关闭自动删除选项,否则无法提取
如需完整可运行的 APDL + MATLAB 流程,可参考以下开源项目:知乎:ANSYS 提取刚度矩阵并验证(附 Python 代码)
CSDN:基于 MATLAB 的 ANSYS 刚度/质量矩阵提取程序
武汉格发信息技术有限公司 | 许可分析,许可优化,许可管理,许可授权,软件授权