ANSYS剛度矩陣的提取與解析(python解析)

2017-09-15  by:CAE仿真在線  來源:互聯(lián)網

在workbench中實現(xiàn)整個過程的參數化過程除了前幾次文章介紹的模型與網格,還應該包括材料參數的參數化定義。利用Python進行二次開發(fā)能夠實現(xiàn)材料參數的自由定義,比如來源于excel表格或者文檔的數據,通過Python代碼的自動讀取,參與到實際的有限元分析進程中。


結構有限元最后的求解過程總是歸結到求解一個大型矩陣方程Ax=b,對于一些情況還需要考慮質量矩陣M和阻尼矩陣C。有限元程序在組裝完所有單元的剛度矩陣后,考慮模型所施加的約束和載荷,最終將剛度矩陣進行一些處理,例如乘大數法,變成Ax=b的形式,其中A是剛度矩陣,b是節(jié)點載荷,x為待求的節(jié)點位移,A和b全為已知量。

基本上各類有限元軟件均能夠提取模型的剛度矩陣,此次針對剛度矩陣的提取與解析做一個例子,采用的軟件是ANSYS經典。

在ANSYS中建立一個簡單的模型,劃分網格后共12個節(jié)點,定義材料參數,施加約束和載荷后求解。有限元模型如下所示。

ANSYS剛度矩陣的提取與解析(python解析)ansys培訓的效果圖片1

圖1

待求解結束后,會在工作目錄下生成一個后綴為full的文件,之后即可進行剛度矩陣的提取。

通過主菜單,如下所示。

ANSYS剛度矩陣的提取與解析(python解析)ansys培訓的效果圖片2

圖2

選擇Matrix后,彈出如下所示的界面。

ANSYS剛度矩陣的提取與解析(python解析)ansys培訓的效果圖片3

圖3

其中,File to be read需要指定工作目錄下生成的full文件,Name of file to write為所導出剛度矩陣的文件名稱;Output matrix file format表示文件格式,還有Binary,生成的是文檔文件,選擇Ascii即可;Matrix to write表示輸出的是剛度矩陣/質量矩陣還是阻尼矩陣;RHS選項表示是否同時輸出右端項,也即是Ax=b中的b。

打開生成的剛度矩陣文檔,如下所示。

ANSYS剛度矩陣的提取與解析(python解析)ansys分析案例圖片4

圖4

該文件的第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()

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

ANSYS剛度矩陣的提取與解析(python解析)ansys分析案例圖片5

圖5


開放分享:優(yōu)質有限元技術文章,助你自學成才

相關標簽搜索:ANSYS剛度矩陣的提取與解析(python解析) Ansys有限元培訓 Ansys workbench培訓 ansys視頻教程 ansys workbench教程 ansys APDL經典教程 ansys資料下載 ansys技術咨詢 ansys基礎知識 ansys代做 Fluent、CFX流體分析 HFSS電磁分析 Abaqus培訓 

編輯
在線報名:
  • 客服在線請直接聯(lián)系我們的客服,您也可以通過下面的方式進行在線報名,我們會及時給您回復電話,謝謝!
驗證碼

全國服務熱線

1358-032-9919

廣州公司:
廣州市環(huán)市中路306號金鷹大廈3800
電話:13580329919
          135-8032-9919
培訓QQ咨詢:點擊咨詢 點擊咨詢
項目QQ咨詢:點擊咨詢
email:kf@1cae.com