Matlab“稍作修改”Abaqus-odb結(jié)果 | 提取三維裝配體Mises應(yīng)力
Abaqus是一款強大的有限元分析軟件,隨著版本的更迭,產(chǎn)品逐漸包含了前處理模塊、求解器、后處理模塊,用戶上手難度越來越小。
Matlab同樣也是一款強大的商業(yè)數(shù)值計算軟件,其可視化能力強的一批,作為興趣研究,可多玩玩這些工具聯(lián)合使用的效果,這次將這兩款工具聯(lián)合使用,介紹Matlab如何讀取Abaqus的.inp、.odb文件?
本次主要分享內(nèi)容包括:
- matlab讀入裝配體網(wǎng)格信息
- Abaqus導(dǎo)出場變量信息
- matlab繪制abaqus裝配體
- Matlab讀取odb文件的mises數(shù)據(jù)
- 單獨instance顯示
- 整個裝配體顯示
- 有限元結(jié)果數(shù)據(jù)modify小技巧
故事的開頭
木木平時喜歡玩一些有限元的東西,有一次在模型分析完畢后,我突發(fā)奇想:能否自定義obd文件,使之顯示成我想要的樣子?
我懷揣著這個想法,嘗試修改.odb文件,可是當(dāng)我打開文件后,傻眼了...
這看不懂啊,好像Abaqus在說:少年,別動我的數(shù)據(jù)!
我偏要對其作出修改!
進入正題
主要編制了兩個函數(shù)文件:loadinp用于讀取.inp文件,meshplot用于可視化繪圖。該程序是國外一個大佬編制的小工具,結(jié)合具體案例可靈活使用。
Abaqus案例模型介紹
邊界條件及單元類型可見下圖,藍色、白色、褐色區(qū)域使用C3D8單元,黃色頂部與底部區(qū)域使用C3D6單元,中間區(qū)域采用C3D8單元。
共有4個部件進行裝配,名字分別為:Plate、Cover-1、Bolt、Cover-2,其中Cover-2是由Cover-1復(fù)制得到,裝配時進行一些平移操作:
邊界條件和接觸設(shè)置的較為復(fù)雜,可下載文末提供的案例文件,自行研究。
Abaqus分析結(jié)果如下(取step-1-increment28):
Matlab讀入網(wǎng)格文件
導(dǎo)入inp文件,對文件中的單元節(jié)點信息進行繪制部件模型。
inp = 'example_data/abaqus_input_3D.inp'; parts = loadinp(inp); % parts(i) : corresponds to the i-th part (struct) % parts(i).Name : corresponds to the i-th part's name (string) % parts(i).Nodes : corresponds to the i-th part's nodes (matrix) % parts(i).Elements : corresponds to the i-th part's elements (struct array) % parts(i).Elements(n) : corresponds to the i-th part's n-th element (struct) % parts(i).Elements(n).Type : corresponds to the i-th part's n-th element type (string) % parts(i).Elements(n).Connectivity : corresponds to the i-th part's n-th element nodal connectivity (array) % plot the parts figure(1); subplot(2, 2, 1); meshplot(parts(1)); title(parts(1).Name); subplot(2, 2, 2); meshplot(parts(2)); title(parts(2).Name); subplot(2, 2, 3); meshplot(parts(3)); title(parts(3).Name);
Abaqus導(dǎo)出場變量信息
接下來是重中之重了,也就是如何繪制場變量云圖?
用戶可在后處理模塊將場變量信息導(dǎo)出至外部文件中,Report-Report Field Output選擇要操作的變量,Setup,F(xiàn)ile類型選擇csv,此時導(dǎo)入進Excel中的數(shù)據(jù)是一列的數(shù)據(jù),如下圖所示:
此時,數(shù)據(jù)均在一列顯示,我們需要在Excel中按照空格進行分列,最終的數(shù)據(jù)效果如下圖所示:
matlab繪制abaqus裝配體
根據(jù)inp文件的裝配信息,現(xiàn)對部件節(jié)點進行平移:
parts(1).Nodes = parts(1).Nodes + [0.0, 40.0, -10.5]; % bolt parts(2).Nodes = parts(2).Nodes + [0.0, 0.0, 1.0]; % cover1 parts(3).Nodes = parts(3).Nodes + [0.0, 0.0, -1.0]; % plate parts(4).Nodes = parts(4).Nodes + [0.0, 0.0, -3.0]; % cover2
現(xiàn)在可以通過疊加繪圖的形式繪制整個裝配體:
figure(2);
meshplot(parts(1)); % bolt
meshplot(parts(2)); % cover1
meshplot(parts(3));% plate
meshplot(parts(4)); % cover2
title('assembly');
Matlab讀取odb文件的mises數(shù)據(jù)
results = readtable('example_data/abaqus_results_3D.csv');
mises_bolt = results.S_Mises(1:2857);
mises_cover1 = results.S_Mises(2858:5215);
mises_plate = results.S_Mises(7574:18166);
mises_cover2 = results.S_Mises(5216:7573);
單獨instance顯示
如果想只顯示某一個instance的結(jié)果云圖,調(diào)用一次meshplot函數(shù)即可
figure(3);
meshplot(parts(1), mises_bolt);
clim( [min(mises_bolt), max(mises_bolt)]);
t1=clim;
t1=linspace(t1(1),t1(2),13);
colorbar('ytick',t1,'Location','westoutside');
colormap("jet");
title('mises');
整個裝配體顯示
多次調(diào)用meshplot函數(shù)進行疊加繪圖即可:
figure(3);
meshplot(parts(1), mises_bolt);
meshplot(parts(2), mises_cover1);
meshplot(parts(3), mises_plate);
meshplot(parts(4), mises_cover2);
% colorbar();
clim( [min(results.S_Mises), max(results.S_Mises)]);
t1=clim;
t1=linspace(t1(1),t1(2),13);
colorbar('ytick',t1,'Location','westoutside');
colormap("jet");
title('mises');
稍作修改
以上方法帶著大家演示了如何用Matlab繪制Abaqus場變量云圖,如果我們想更改,那就可以在該區(qū)域?qū)?yīng)的Excel部分進行修改,即可操作成功。
有時,我們在分析斷裂問題時,最后一步的節(jié)點坐標(biāo)與初始坐標(biāo)相差可能較大,此時我們可以在調(diào)用meshplot函數(shù)時,將最后一步的節(jié)點坐標(biāo)寫入形參,即可顯示斷裂面。
數(shù)據(jù)及函數(shù)文件獲取方式:
工程師必備
- 項目客服
- 培訓(xùn)客服
- 平臺客服
TOP




















