【ANSYS模态分析】Ansys Modal Analysis Tutorial Part2

Ansys Modal Analysis Tutorial Part2

creation time: 2024/6/21

revision time: 2024/8/16

上这一节中,我们利用 ANSYS Workbench 新建一片简单的太阳能帆板,并对其做模态分析。

这一节,我们将想办法将 ANSYS 中获得的数据进行导出。由于是边学 ANSYS 边记录,这一节可能存在错误或者问题,请大家批评指正。

APDL Math

  1. 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 工作空间中导入。
  2. APDL Math 使用过程

    • APDL Math 使用包含 4 步:创建矩阵、矩阵读入到 APDL Math 工作空间、操作矩阵、使用矩阵。

    • 创建矩阵

      矩阵和向量有 3 种创建方法:

      • APDL 脚本中自定义矩阵和向量(*DIM*SET等)。
      • 调用 Mechanical APDL 生成的矩阵和向量,即从先前求解或执行 WRFULL 命令后的 .full ` .emat \ .mode \ .sub.rst 文件中提取。
      • 调用第三方的 Harwell-Boeing 和 Matrix Market 格式矩阵。
    • 矩阵读入到 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 格式矩阵给第三方程序使用。
  3. 自由度排序

    APDL Math 工作空间将整个有限元模型的自由度(DOFS)由 1 排至 n,其中 n 为系统总自由度。Mechanical APDL 使用 3 种自由度排序方式:

    • 基于用户节点编号的用户排序。例如,用户排序对应于在通用后处理器 POST1 种使用 PRNSOLU命令显示的节点编号。
    • 基于节点编号压缩和网格重排的内部排序。内部排序用于优化软件对系统缓存的消耗。用户排序和内部排序的对应关系称为“节点等效表”(参见软件帮助文档中 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
      

模态分析之后验证模态振型的正交性

  1. 在轮廓树中右击求解(A6),插入命令(APDL)

    image-20240816125752330

  2. 点击轮廓树中新出现的命令APDL,写入 APDL 命令:

    image-20240816130244705

    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
    
  3. 然后进行求解。有时求解不成功(黄色闪电没有变成绿色对勾),可以尝试右击轮廓树模态(A5)插入命令,并删除新插入的命令,使得整个求解(A6)都变成黄色闪电,再进行求解。在文件夹保存路径\xx_files\dp0\SYS\MECH中可以找到打印的矩阵文件PhiTMPhi.txt,其为单位阵:

    image-20240816130756903

导出质量、刚度、阻尼、振型矩阵到 MATLAB

  1. 插入 命令(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中可以找到打印的矩阵文件:

    image-20240816142300738

  2. 或者可以使用 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中可以找到打印的矩阵文件:

    image-20240816143243092

附录A 部分ANSYS命令帮助

  1. *SMAT创建稀疏矩阵(Creates a sparse matrix)

    *SMAT, Matrix, Type, Method, Val1, Val2, Val3, Val4
    

    Method = IMPORT 时,下述表格指明了后续 valx 变量的值:

    image-20240816133914822

  2. *DMAT创建密集矩阵(Creates a dense matrix)

    *DMAT, Matrix, Type, Method, Val1, Val2, Val3, Val4, Val5
    

    Method = IMPORT 时,下述表格指明了后续 valx 变量的值:

    image-20240816134215585

    image-20240816134230085

  3. *VEC创建向量(Creates a vector)

    *VEC, Vector, Type, Method, Val1, Val2, Val3, Val4
    

    Method = IMPORT 时,下述表格指明了后续 valx 变量的值:

    image-20240816134404498

  4. *MULT执行矩阵乘法(Performs the matrix multiplication),$ M3 = M1(T1) * M2(T2) $

    *MULT, M1, T1, M2, T2, M3
    
  5. *PRINT将矩阵值打印到文件(Prints the matrix values to a file)

    *PRINT, Matrix, Fname
    
  6. HBMAT以Harwell-Boeing格式写入组装的全局矩阵(Writes an assembled global matrix in Harwell-Boeing format)

    HBMAT, Fname, Ext, --, Form, Matrx, Rhs, Mapping
    

    Matrix 变量可选项:

    image-20240816135030393

附录2 HBMAT介绍

  1. 模态分析时,因仅 LANB 和 QR 法可生成完整的质量矩阵,因此也仅采用这两种方法时才可使用 HBMAT 命令得到质量矩阵文件。

  2. 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 - 与系数矩阵相同方法。
    • 第6行后:矩阵元素值(单列):

      • 矩阵类型用 3 个字符表示;
        • 第 1 个字符可取:R - 实数矩阵、C - 复数矩阵、P - 仅矩阵结构(无元素数值);
        • 第 2 个字符可取:S - 对称矩阵、U - 不对称矩阵、H - Hermitian矩阵、Z - 病态对称矩阵;R - 带状矩阵;
        • 第 3 个字符可取:A - 组装的矩阵、E - 单元矩阵(未组装)。
  3. 对称矩阵只存储下三角元素,如结构刚度矩阵为对称矩阵,Harwell-Boeing 格式则仅记录下三角元素。

参考文献

  1. ANSYS APDL 参数化有限元分析技术及其应用实例,第二版,中国水利水电出版社。

  2. HBMAT命令详解,可用于提取刚度和质量矩阵,xubin_1981
    an矩阵、Z - 病态对称矩阵;R - 带状矩阵;
    * 第 3 个字符可取:A - 组装的矩阵、E - 单元矩阵(未组装)。

  3. 对称矩阵只存储下三角元素,如结构刚度矩阵为对称矩阵,Harwell-Boeing 格式则仅记录下三角元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值