ANSYS刚度矩阵的提取与解析(python解析)

就ansys如何提取刚度矩阵、如何解读提取的文档以及利用Python进行解析。

在workbench中实现整个过程的参数化过程除了前几次文章介绍的模型与网格,还应该包括材料参数的参数化定义。利用Python进行二次开发能够实现材料参数的自由定义,比如来源于excel表格或者文档的数据,通过Python代码的自动读取,参与到实际的有限元分析进程中。

   结构有限元最后的求解过程总是归结到求解一个大型矩阵方程Ax=b,对于一些情况还需要考虑质量矩阵M和阻尼矩阵C。有限元程序在组装完所有单元的刚度矩阵后,考虑模型所施加的约束和载荷,最终将刚度矩阵进行一些处理,例如乘大数法,变成Ax=b的形式,其中A是刚度矩阵,b是节点载荷,x为待求的节点位移,A和b全为已知量。

基本上各类有限元软件均能够提取模型的刚度矩阵,此次针对刚度矩阵的提取与解析做一个例子,采用的软件是ANSYS经典。

在ANSYS中建立一个简单的模型,划分网格后共12个节点,定义材料参数,施加约束和载荷后求解。有限元模型如下所示。

微信图片_20180522160444.jpg

待求解结束后,会在工作目录下生成一个后缀为full的文件,之后即可进行刚度矩阵的提取。

通过主菜单,如下所示。

微信图片_20180522160450.jpg

选择Matrix后,弹出如下所示的界面。

微信图片_20180522160453.jpg

其中,File to be read需要指定工作目录下生成的full文件,Name of file to write为所导出刚度矩阵的文件名称;Output matrix file format表示文件格式,还有Binary,生成的是文档文件,选择Ascii即可;Matrix to write表示输出的是刚度矩阵/质量矩阵还是阻尼矩阵;RHS选项表示是否同时输出右端项,也即是Ax=b中的b。

打开生成的刚度矩阵文档,如下所示。

微信图片_20180522160456.jpg

该文件的第1行:格式A72,解释性文字。

第2行:一共5个数值,格式5I14,其中585表示文件的总行数(不包括头文件,也即是前面5行不算);25表示矩阵列指针的总行数,通常是矩阵的阶数+1,其具体的数值位置是从第6行到30行;268表示矩阵行索引的总行数;第二个268表示矩阵元素的总行数;24表示右端项的数值总行数。

第3行:RSA表示矩阵的形式,其中R表示实数矩阵,S表示为对称矩阵,A表示为组装的矩阵;后面的两个24分别表示矩阵行数、矩阵列数,268表示矩阵的元素。

第4行:格式说明

第5行:几个数表示右端项的输出说明,F表示全部存储。

搞清楚头文件中的各个参数的实际意义,再结合各行的内容,能够清楚地知道矩阵的所有元素的数值。

通过简单的程序就可以将该文件进行解析,生成自己想要的格式。

这里补充说明一下,对于对称稀疏矩阵,在储存的时候只保留下三角非零元素。

本次解析所用的语言为python.

#!user/bin/python

#-* -coding:UTF-8 -*-

#打开矩阵文件

inpfile = open("E:\CAE_Tech\process_files\232Files\matrix.txt")

#读取所有内容

lines = inpfile.readlines()

inpfile.close()

 

#打开输出文件

outfile = open("E:\CAE_Tech\process_files\232Files\outmatrix.txt",’w’)

 

#解析矩阵文件的第二行

row_second = lines[1].split()

#得到矩阵的总行数(扣除头文件),此次实例中为585

Tol_content = int(row_second[0])

#得到列指针的总行数

Col_tol = int(row_second[1])

#得到矩阵元素总数

Row_tol = int(row_second[3])

#得到右端项的行数

Rhs_tol = int(row_second[4])

 

#初始化矩阵每列非零元素的起始行数

Star_row_num = [1] * Col_tol

#获取行起始数组

for i in range (Col_tol):

       temp = lines[i+5].split()

       Star_row_num[i] = int(temp[0])

 

for i in range (Rhs_tol):

       temp_len = Star_row_num[i+1] - Star_row_num[i]

       temp_len1 = Star_row_num[1] - Star_row_num[0]

       temp_len2 = Star_row_num[i] - Star_row_num[0]

       row_start_num = 5 + Col_tol + temp_len2

      

       Each_col_num = i + 1

       Each_col_num_str = str(Each_col_num)

      

       for j in range (temp_len):

              Each_row_num_str = lines[row_start_num + j].split()

              Each_row_num = int(Each_row_num_str[0])

              Each_row_num_str = str(Each_row_num)

             

              Each_ele_num = Row_tol +5 + Col_tol + temp_len2 + j

              Each_ele_str = lines[Each_ele_num].split()

              Each_ele_value = Each_ele_str[0]

             

              #得到每一行应该输出的列号,行号以及元素值

              Each_row_list = Each_row_num_str,Each_col_num_str,Each_ele_value,'\n'

              a = '  '

              Each_line = a.join(Each_row_list)

             

              outfile.write(Each_line)

#输出右端项

for i in range (Rhs_tol):

       Rhs_num = Tol_content + 5 -Rhs_tol +i

       Rhs_each_row = lines[Rhs_num]

       #去掉字符串前面的空格

       Rhs_each_row = Rhs_each_row.lstrip()

      outfile.write(Rhs_each_row)

     

outfile.close()

解析后生成的文件如下所示:

微信图片_20180522160501.jpg

源自CAE技术分享公众号

CAEANSYSPYTHON

ANSYS刚度矩阵的提取与解析(python解析)的评论2条

  • 一世终苍老
    0
    提取出了那个文件,但是只能看到刚度矩阵,看不到质量矩阵是什么原因,在什么条件下质量矩阵会出现
  • 小跟爸爸
    0
    你好,可以提取柔度矩阵吗?

ANSYS刚度矩阵的提取与解析(python解析)的相关案例教程

用python识别路径下所有excel文件,并检索每个excel文件中的sheet表,并匹配搜索关键词,如果sheet表中含有关键词则提取表中的markov数据到数组中,同时点击数据输出可将数据输出到名称为output_data_liu的excel表中。 from tkinter import Tk, Button, filedialog, Label, Entry # 创建主窗口 window
PETSc是Portable, ExtensibleToolkit for Scientific Computation的缩写,是美国能源部开发的科学计算可移植扩展工具包,其基于MPI实现在分布式内存环境下实现偏微分方程和线性方程组的求解。 对于线性方程组的求解,PETSc提供了较为全面的迭代方法求解,尤其是基于Krylov方法的各种迭代方法及各种预处理方法。在PETSc中,支持的krylov方法
前言 今天我们就利用python脚本实现批量下载百度图片。直接开整~ 如果有正在跟我一样的自学的朋友,需要我本篇的代码或者其他的Python学习资料可以加Python新手学习交流群:594356095添加助理直接获取 效果展示 编写思路: 1.获取图片的url链接 首先,打开百度图片首页,注意下图url中的index 接着,把页面切换成传统翻页版(flip),因为这样有利于我们爬取图片! 然后,右
本次学习了手机抓包的相关知识,了解了Charles-mitmproxy-Appium的基本使用,通过对当当图书评论的爬取,得以实践。 / 01 / Charles Charles是一个APP抓包工具,与我之前最先使用的Filddler相似,可以得到手机App运行过程中发生的所有网络请求和响应内容。 这里简单说一下安装。 电脑端下载安装完Charles后,需要配置证书,最后开启SSL监听,这个具体大
上一篇的推文讲了三家自主品牌车企,上汽、长安、吉利。接下来讲讲剩下的七家,东风、北汽、长城、一汽、广汽、江淮。 Python腾讯大牛直播预约: 4. 东风 从下面东风的车可以看出,大部分都是商用车,了解一下东风小康。其实现在的东风启辰,也是东风日产旗下的品牌,一款假国产车(网评)。 import os import requests from lxml import etree headers =
影响力
粉丝
内容
获赞
收藏
    项目客服
    培训客服
    2 5