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

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

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


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

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

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

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

圖1

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

通過主菜單,如下所示。

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

圖2

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

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

圖3

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

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

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

圖4

該文件的第1行:格式A72,解釋性文字。

第2行:一共5個數(shù)值,格式5I14,其中585表示文件的總行數(shù)(不包括頭文件,也即是前面5行不算);25表示矩陣列指針的總行數(shù),通常是矩陣的階數(shù)+1,其具體的數(shù)值位置是從第6行到30行;268表示矩陣行索引的總行數(shù);第二個268表示矩陣元素的總行數(shù);24表示右端項的數(shù)值總行數(shù)。

第3行:RSA表示矩陣的形式,其中R表示實數(shù)矩陣,S表示為對稱矩陣,A表示為組裝的矩陣;后面的兩個24分別表示矩陣行數(shù)、矩陣列數(shù),268表示矩陣的元素。

第4行:格式說明

第5行:幾個數(shù)表示右端項的輸出說明,F表示全部存儲。

搞清楚頭文件中的各個參數(shù)的實際意義,再結(jié)合各行的內(nèi)容,能夠清楚地知道矩陣的所有元素的數(shù)值。

通過簡單的程序就可以將該文件進(jìn)行解析,生成自己想要的格式。

這里補充說明一下,對于對稱稀疏矩陣,在儲存的時候只保留下三角非零元素。

本次解析所用的語言為python.

#!user/bin/python

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

#打開矩陣文件

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

#讀取所有內(nèi)容

lines = inpfile.readlines()

inpfile.close()


#打開輸出文件

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


#解析矩陣文件的第二行

row_second = lines[1].split()

#得到矩陣的總行數(shù)(扣除頭文件),此次實例中為585

Tol_content = int(row_second[0])

#得到列指針的總行數(shù)

Col_tol = int(row_second[1])

#得到矩陣元素總數(shù)

Row_tol = int(row_second[3])

#得到右端項的行數(shù)

Rhs_tol = int(row_second[4])


#初始化矩陣每列非零元素的起始行數(shù)

Star_row_num = [1] * Col_tol

#獲取行起始數(shù)組

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]


#得到每一行應(yīng)該輸出的列號,行號以及元素值

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)質(zhì)有限元技術(shù)文章,助你自學(xué)成才

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

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

全國服務(wù)熱線

1358-032-9919

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