Matlab“稍作修改”Abaqus-odb結(jié)果 | 提取三維裝配體Mises應(yīng)力

Abaqus是一款強大的有限元分析軟件,隨著版本的更迭,產(chǎn)品逐漸包含了前處理模塊、求解器、后處理模塊,用戶上手難度越來越小。

Matlab同樣也是一款強大的商業(yè)數(shù)值計算軟件,其可視化能力強的一批,作為興趣研究,可多玩玩這些工具聯(lián)合使用的效果,這次將這兩款工具聯(lián)合使用,介紹Matlab如何讀取Abaqus的.inp、.odb文件?

本次主要分享內(nèi)容包括:

  1. matlab讀入裝配體網(wǎng)格信息
  2. Abaqus導(dǎo)出場變量信息
  3. matlab繪制abaqus裝配體
  4. Matlab讀取odb文件的mises數(shù)據(jù)
  • 單獨instance顯示
  • 整個裝配體顯示
  1. 有限元結(jié)果數(shù)據(jù)modify小技巧

故事的開頭

木木平時喜歡玩一些有限元的東西,有一次在模型分析完畢后,我突發(fā)奇想:能否自定義obd文件,使之顯示成我想要的樣子?

我懷揣著這個想法,嘗試修改.odb文件,可是當(dāng)我打開文件后,傻眼了...

Matlab“稍作修改”Abaqus-odb結(jié)果 | 提取三維裝配體Mises應(yīng)力的圖1

這看不懂啊,好像Abaqus在說:少年,別動我的數(shù)據(jù)!

我偏要對其作出修改!

進入正題

主要編制了兩個函數(shù)文件:loadinp用于讀取.inp文件,meshplot用于可視化繪圖。該程序是國外一個大佬編制的小工具,結(jié)合具體案例可靈活使用。

Abaqus案例模型介紹

邊界條件及單元類型可見下圖,藍色、白色、褐色區(qū)域使用C3D8單元,黃色頂部與底部區(qū)域使用C3D6單元,中間區(qū)域采用C3D8單元。

Matlab“稍作修改”Abaqus-odb結(jié)果 | 提取三維裝配體Mises應(yīng)力的圖2

共有4個部件進行裝配,名字分別為:Plate、Cover-1、Bolt、Cover-2,其中Cover-2是由Cover-1復(fù)制得到,裝配時進行一些平移操作:

Matlab“稍作修改”Abaqus-odb結(jié)果 | 提取三維裝配體Mises應(yīng)力的圖3

邊界條件和接觸設(shè)置的較為復(fù)雜,可下載文末提供的案例文件,自行研究。

Abaqus分析結(jié)果如下(取step-1-increment28):

Matlab“稍作修改”Abaqus-odb結(jié)果 | 提取三維裝配體Mises應(yīng)力的圖4

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);
Matlab“稍作修改”Abaqus-odb結(jié)果 | 提取三維裝配體Mises應(yīng)力的圖5

Abaqus導(dǎo)出場變量信息

接下來是重中之重了,也就是如何繪制場變量云圖?

用戶可在后處理模塊將場變量信息導(dǎo)出至外部文件中,Report-Report Field Output選擇要操作的變量,Setup,F(xiàn)ile類型選擇csv,此時導(dǎo)入進Excel中的數(shù)據(jù)是一列的數(shù)據(jù),如下圖所示:

Matlab“稍作修改”Abaqus-odb結(jié)果 | 提取三維裝配體Mises應(yīng)力的圖6

此時,數(shù)據(jù)均在一列顯示,我們需要在Excel中按照空格進行分列,最終的數(shù)據(jù)效果如下圖所示:

Matlab“稍作修改”Abaqus-odb結(jié)果 | 提取三維裝配體Mises應(yīng)力的圖7

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“稍作修改”Abaqus-odb結(jié)果 | 提取三維裝配體Mises應(yīng)力的圖8

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');
Matlab“稍作修改”Abaqus-odb結(jié)果 | 提取三維裝配體Mises應(yīng)力的圖9

整個裝配體顯示

多次調(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-odb結(jié)果 | 提取三維裝配體Mises應(yīng)力的圖10

稍作修改

以上方法帶著大家演示了如何用Matlab繪制Abaqus場變量云圖,如果我們想更改,那就可以在該區(qū)域?qū)?yīng)的Excel部分進行修改,即可操作成功。

有時,我們在分析斷裂問題時,最后一步的節(jié)點坐標(biāo)與初始坐標(biāo)相差可能較大,此時我們可以在調(diào)用meshplot函數(shù)時,將最后一步的節(jié)點坐標(biāo)寫入形參,即可顯示斷裂面。


數(shù)據(jù)及函數(shù)文件獲取方式:

登錄后免費查看全文
立即登錄
App下載
技術(shù)鄰APP
工程師必備
  • 項目客服
  • 培訓(xùn)客服
  • 平臺客服

TOP

2
2
6