Ansys Modal Analysis Tutorial Part2
creation time: 2024/6/21
revision time: 2024/8/16
上这一节中,我们利用 ANSYS Workbench 新建一片简单的太阳能帆板,并对其做模态分析。
这一节,我们将想办法将 ANSYS 中获得的数据进行导出。由于是边学 ANSYS 边记录,这一节可能存在错误或者问题,请大家批评指正。
文章目录
APDL Math
-
APDL Math 简介
- APDL Math 是 13.0 版本以来 Mechanical APDL 模块中的重要功能发布,其扩展了 Mechanical APDL 软件的 APDL 脚本环境,用于调用 Mechanical APDL 软件强大的矩阵运算功能和求解器。
- APDL Math 提供了访问
.full
\.emat
\.mode
\.sub
文件和其它来源文件的权限,用户可以读入、修改、写回文件或者直接调用求解器进行求解。 - APDL Math 同时具有对密集矩阵和稀疏矩阵进行操作的能力。
- APDL Math 和标准 APDL 脚本环境的差别在于,前者工作在独立于后者的工作空间中。标准 APDL 脚本环境的向量和矩阵可以导出到 APDL Math 工作空间中,同时也可以从 APDL Math 工作空间中导入。
-
APDL Math 使用过程
-
APDL Math 使用包含 4 步:创建矩阵、矩阵读入到 APDL Math 工作空间、操作矩阵、使用矩阵。
-
创建矩阵
矩阵和向量有 3 种创建方法:
- APDL 脚本中自定义矩阵和向量(
*DIM
、*SET
等)。 - 调用 Mechanical APDL 生成的矩阵和向量,即从先前求解或执行 WRFULL 命令后的
.full
`.emat
\.mode
\.sub
或.rst
文件中提取。 - 调用第三方的 Harwell-Boeing 和 Matrix Market 格式矩阵。
- APDL 脚本中自定义矩阵和向量(
-
矩阵读入到 APDL Math 工作空间
将创建好的密集矩阵、稀疏矩阵和向量分别使用 APDL Math 工作空间的
*DMAT
\*SMAT
和*VEC
命令进行读入。 -
操作矩阵
用户可以使用
*MULT
和*AXPY
进行线性矩阵运算来创建其它矩阵,也可以直接通过 APDL 表达式修改矩阵内容,例如 $ A(3,2)=6.4 $。另外,用户可以按照如下步骤使用标准 APDL 运算改变矩阵:
- 使用
*EXPORT, ,APDL
从 APDL Math 工作空间导出矩阵到标准 APDL 环境。 - 使用标准 APDL 操作改变矩阵,例如
*SET
\*MOPER
\*VFUN
\*DO
等。 - 使用
*DMAT, , , IMPORT, APDL
(或者*VEC, , , IMPORT, APDL
)命令返回给 APDL Math工作空间。
- 使用
-
使用矩阵
修改过的矩阵有 3 种使用方式:标准 APDL 环境、APDL Math 工作空间种进行求解、导出给第三方程序进行使用。
- 标准 APDL 环境中使用:导出矩阵(
*EXPORT, , SUB
命令)作为一个超单元,在分析中使用。 - APDL Math 工作空间中进行求解:使用
*LSENGINE
识别求解器;使用*LSFACTOR
缩放矩阵;使用LSSOLVE
求解未知量;使用*ITENGINE
命令采用 PCG 算法对摄动矩阵求解得到新的结果(可以用于参数和敏感性研究)。 - 使用
*EXPORT
命令导出 Harwell-Boeing 或 Matrix Market 格式矩阵给第三方程序使用。
- 标准 APDL 环境中使用:导出矩阵(
-
-
自由度排序
APDL Math 工作空间将整个有限元模型的自由度(DOFS)由 1 排至 n,其中 n 为系统总自由度。Mechanical APDL 使用 3 种自由度排序方式:
- 基于用户节点编号的用户排序。例如,用户排序对应于在通用后处理器 POST1 种使用
PRNSOL
,U
命令显示的节点编号。 - 基于节点编号压缩和网格重排的内部排序。内部排序用于优化软件对系统缓存的消耗。用户排序和内部排序的对应关系称为“节点等效表”(参见软件帮助文档中 Programmer’s Manual 中关于二进制数据文件格式的描述)。
- 为减少求解时间和磁盘占用而进行的求解器排序(solver ordering)。约束、耦合、约束方程已经考虑到模型当中,所以这一排序也称为 BCS ordering,表示系统的独立自由度数。
因为由
.full
文件导入的矩阵和载荷向量(*SMAT, , , FULL
)使用求解器排序,所以操作这些矩阵时需要考虑内部排序到求解器排序间的映射关系。同时,由*LSBAC
命令计算的结果也是按照求解器排序。-
实验 1:将
.mode
文件中的振型、.rst
文件中的自由度(内部排序)两个文件和.full
文件(求解器排序)一起使用时,需要按照如下命令统一转换为求解器排序:*SMAT, Nod2Bcs, D, IMPORT, FULL, file.full, NOD2BCS ! 导入映射向量 *DMAT, PhiI, D, IMPORT, MODE, file.mode ! 导入模态振型 *MULT, Nod2Bcs, , PhiI, ,PhiB ! 转换为求解器排序
-
实验 2:一次
*LSBAC
命令之后,使用 NOD2BCS 选项将求解器排序转换为内部排序命令:*MULT, Nod2Bcs, TRAN, Xbcs, , Xin
-
实验 3:从内部结果向量 Xint 中提取用户节点编号为 45232 的 Uz 向位移,需要使用前向节点映射将用户排序转换为内部排序,具体命令如下:
*VEC, MapForward, I, IMPORT, FILL, file.full, FORWARD j = MapForward(45232) UzVal = Xint((j-1)*NUMDOF+3) ! 3 是 Uz 自由度编号
-
实验 4:将用户节点 672 上施加 FX 向力转换到 Fint 向量中,需要使用后向节点映射将内部节点排序转换为外部排序(用户排序),具体命令如下:
*VEC, MapBack, I, IMPORT, FULL, file.full, BACK j = MapBack(672) Fint((j-1)*NUMDOF+1) = -1000
将改变后内部排序的矩阵转换为求解器排序,以便进行求解:
*MULT, Nod2Bcs, , Fint, , Fbcs
- 基于用户节点编号的用户排序。例如,用户排序对应于在通用后处理器 POST1 种使用
模态分析之后验证模态振型的正交性
-
在轮廓树中右击
求解(A6)
,插入命令(APDL)
: -
点击轮廓树中新出现的
命令APDL
,写入 APDL 命令:APDL 命令:
FINISH ! 由.full 文件读取质量阵 M 和 Nod2Bcs 矩阵 *SMAT, MassMatrix, D, IMPORT, FULL, file.full, MASS *SMAT, NodToBcs, D, IMPORT, FULL, file.full, NOD2BCS ! 由 .mode 文件读取模态振型矩阵 *DMAT, Phi, D, IMPORT, MODE, file.mode ! 将振型矩阵转换为求解器排序 *MULT, NodToBcs, , Phi, , BCSPhi ! 创建 PhiTMPhi = Phi^T*M*Phi *MULT, MassMatrix, , BCSPhi, ,APhi *MULT, BCSPhi, TRANS, APhi, , PhiTMPhi ! 打印矩阵,正确结果应为单位阵 *PRINT, PhiTMPhi,PhiTMPhi.txt
-
然后进行求解。有时求解不成功(黄色闪电没有变成绿色对勾),可以尝试右击轮廓树
模态(A5)
插入命令
,并删除新插入的命令,使得整个求解(A6)
都变成黄色闪电,再进行求解。在文件夹保存路径\xx_files\dp0\SYS\MECH
中可以找到打印的矩阵文件PhiTMPhi.txt
,其为单位阵:
导出质量、刚度、阻尼、振型矩阵到 MATLAB
-
插入
命令(APDL)
:FINISH ! 由.full 文件读取质量阵、刚度阵、阻尼阵和 Nod2Bcs 矩阵USR *SMAT, MassMatrix, D, IMPORT, FULL, file.full, MASS *SMAT, StiffMatrix, D, IMPORT, FULL, file.full, STIFF !*SMAT, DampMatrix, D, IMPORT, FULL, file.full, DAMP ! 仅在分析了阻尼时有用 ! 由.full 文件读取 Nod2Bcs 矩阵、USR2BCS 矩阵 *SMAT, NodToBcs, D, IMPORT, FULL, file.full, NOD2BCS *SMAT, USRToBcs, D, IMPORT, FULL, file.full, USR2BCS ! 由.full 文件读取 FORWARD 向量、 BACK 向量 *VEC, MapForward, I, IMPORT, FULL, file.full, FORWARD *VEC, MapBack, I, IMPORT, FULL, file.full, BACK ! 由 .mode 文件读取模态振型矩阵 *DMAT, Phi, D, IMPORT, MODE, file.mode ! 将振型矩阵转换为求解器排序 *MULT, NodToBcs, , Phi, , BCSPhi ! 打印矩阵 *PRINT, MassMatrix, MassMatrix.txt *PRINT, StiffMatrix, StiffMatrix.txt !*PRINT, DampMatrix, DampMatrix.txt ! 仅在分析了阻尼时有用 *PRINT, NodToBcs, NodToBcs.txt *PRINT, USRToBcs, USRToBcs.txt *PRINT, MapForward, MapForward.txt *PRINT, MapBack, MapBack.txt *PRINT,Phi,Phi.txt *PRINT,BCSPhi,BCSPhi.txt FINISH
在文件夹
保存路径\xx_files\dp0\SYS\MECH
中可以找到打印的矩阵文件: -
或者可以使用 HBMAT 导出质量、刚度、阻尼矩阵为 HBMAT 格式:
FINISH ! 进入二进制文件转储处理程序 /aux2 ! 打开 file.full 文件 FILE, file, full ! 使用 HBMAT 命令导出矩阵 HBMAT, StiffHBmat, txt, , ASCII, STIFF, YES, YES HBMAT, MassHBmat, txt, , ASCII, MASS, YES, YES !HBMAT, DampHBmat, txt, , ASCII, DAMP, YES, YES ! 仅在分析了阻尼时有用 FINISH
在文件夹
保存路径\xx_files\dp0\SYS\MECH
中可以找到打印的矩阵文件:
附录A 部分ANSYS命令帮助
-
*SMAT
,创建稀疏矩阵(Creates a sparse matrix)*SMAT, Matrix, Type, Method, Val1, Val2, Val3, Val4
当
Method = IMPORT
时,下述表格指明了后续valx
变量的值: -
*DMAT
,创建密集矩阵(Creates a dense matrix)*DMAT, Matrix, Type, Method, Val1, Val2, Val3, Val4, Val5
当
Method = IMPORT
时,下述表格指明了后续valx
变量的值: -
*VEC, Vector, Type, Method, Val1, Val2, Val3, Val4
当
Method = IMPORT
时,下述表格指明了后续valx
变量的值: -
*MULT
,执行矩阵乘法(Performs the matrix multiplication),$ M3 = M1(T1) * M2(T2) $*MULT, M1, T1, M2, T2, M3
-
*PRINT
,将矩阵值打印到文件(Prints the matrix values to a file)*PRINT, Matrix, Fname
-
HBMAT
,以Harwell-Boeing格式写入组装的全局矩阵(Writes an assembled global matrix in Harwell-Boeing format)HBMAT, Fname, Ext, --, Form, Matrx, Rhs, Mapping
Matrix
变量可选项:
附录2 HBMAT介绍
-
模态分析时,因仅 LANB 和 QR 法可生成完整的质量矩阵,因此也仅采用这两种方法时才可使用 HBMAT 命令得到质量矩阵文件。
-
Harwell-Boeing 文件格式
-
用 HBMAT 命令可输出结构刚度矩阵、质量矩阵和阻尼矩阵,其文件记录格式为大型稀疏矩阵的标准交换格式,采用索引存储方法仅记录矩阵的非零元素。文件基本格式是前面有 4 或 5 行描述数据,其后为单列矩阵元素值,说明如下:
-
第1行:格式(A72),为文件头的字符型解释,如刚度矩阵或质量矩阵等标题;
-
第2行:格式(5I14),分别表示该文件的总行数(不包括文件头)、矩阵列指针的总行数、矩阵行索引的总行数、矩阵元素数值的总行数、右边项总行数;
-
第3行:格式(A3,11X,4I14),分别为矩阵类型、矩阵行数、矩阵列数、矩阵行索引数(对组装后的矩阵,该值等于矩阵行索引数)、单元元素数(对组装后的矩阵此值为0);
-
第4行:格式(2A16,2A20),分别表示列指针格式、行索引格式、系数矩阵数值格式、右边项数值格式;
- 第5行:格式(A3,11X,2I14),A3各列分别表示右边项格式、应用高斯起始矢量、应用eXact求解矢量;两个整数分别表示右边项列数、行索引数:
- 三个字符中的第 1 个字符可取:
F
- 全部存贮(如节点荷载向量的全部元素)、M
- 与系数矩阵相同方法。
- 三个字符中的第 1 个字符可取:
- 第5行:格式(A3,11X,2I14),A3各列分别表示右边项格式、应用高斯起始矢量、应用eXact求解矢量;两个整数分别表示右边项列数、行索引数:
-
第6行后:矩阵元素值(单列):
- 矩阵类型用 3 个字符表示;
- 第 1 个字符可取:
R
- 实数矩阵、C
- 复数矩阵、P
- 仅矩阵结构(无元素数值); - 第 2 个字符可取:
S
- 对称矩阵、U
- 不对称矩阵、H
- Hermitian矩阵、Z
- 病态对称矩阵;R
- 带状矩阵; - 第 3 个字符可取:
A
- 组装的矩阵、E
- 单元矩阵(未组装)。
- 第 1 个字符可取:
- 矩阵类型用 3 个字符表示;
-
-
对称矩阵只存储下三角元素,如结构刚度矩阵为对称矩阵,Harwell-Boeing 格式则仅记录下三角元素。
参考文献
-
ANSYS APDL 参数化有限元分析技术及其应用实例,第二版,中国水利水电出版社。
-
HBMAT命令详解,可用于提取刚度和质量矩阵,xubin_1981。
an矩阵、Z
- 病态对称矩阵;R
- 带状矩阵;
* 第 3 个字符可取:A
- 组装的矩阵、E
- 单元矩阵(未组装)。 -
对称矩阵只存储下三角元素,如结构刚度矩阵为对称矩阵,Harwell-Boeing 格式则仅记录下三角元素。