Matlab处理Abaqus-odb结果:提取三维装配体Mises应力技巧

Abaqus是一款强大的有限元分析软件,随着版本的更迭,产品逐渐包含了前处理模块、求解器、后处理模块,用户上手难度越来越小。

Matlab同样也是一款强大的商业数值计算软件,其可视化能力强的一批,作为兴趣研究,可多玩玩这些工具联合使用的效果,这次将这两款工具联合使用,介绍Matlab如何读取Abaqus的.inp、.odb文件?

本次主要分享内容包括:

  1. matlab读入装配体网格信息
  2. Abaqus导出场变量信息
  3. matlab绘制abaqus装配体
  4. Matlab读取odb文件的mises数据
  • 单独instance显示
  • 整个装配体显示
  1. 有限元结果数据modify小技巧



故事的开头

木木平时喜欢玩一些有限元的东西,有一次在模型分析完毕后,我突发奇想:能否自定义obd文件,使之显示成我想要的样子?

我怀揣着这个想法,尝试修改.odb文件,可是当我打开文件后,傻眼了...

Matlab“稍作修改”Abaqus-odb结果 | 提取三维装配体Mises应力的图1

这看不懂啊,好像Abaqus在说:少年,别动我的数据!

我偏要对其作出修改!



进入正题

主要编制了两个函数文件:loadinp用于读取.inp文件,meshplot用于可视化绘图。该程序是国外一个大佬编制的小工具,结合具体案例可灵活使用。

Abaqus案例模型介绍

边界条件及单元类型可见下图,蓝色、白色、褐色区域使用C3D8单元,黄色顶部与底部区域使用C3D6单元,中间区域采用C3D8单元。

Matlab“稍作修改”Abaqus-odb结果 | 提取三维装配体Mises应力的图2

共有4个部件进行装配,名字分别为:Plate、Cover-1、Bolt、Cover-2,其中Cover-2是由Cover-1复制得到,装配时进行一些平移操作:

Matlab“稍作修改”Abaqus-odb结果 | 提取三维装配体Mises应力的图3

边界条件和接触设置的较为复杂,可下载文末提供的案例文件,自行研究。

Abaqus分析结果如下(取step-1-increment28):

Matlab“稍作修改”Abaqus-odb结果 | 提取三维装配体Mises应力的图4

Matlab读入网格文件

导入inp文件,对文件中的单元节点信息进行绘制部件模型。

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结果 | 提取三维装配体Mises应力的图5

Abaqus导出场变量信息

接下来是重中之重了,也就是如何绘制场变量云图?

用户可在后处理模块将场变量信息导出至外部文件中,Report-Report Field Output选择要操作的变量,Setup,File类型选择csv,此时导入进Excel中的数据是一列的数据,如下图所示:

Matlab“稍作修改”Abaqus-odb结果 | 提取三维装配体Mises应力的图6

此时,数据均在一列显示,我们需要在Excel中按照空格进行分列,最终的数据效果如下图所示:

Matlab“稍作修改”Abaqus-odb结果 | 提取三维装配体Mises应力的图7

matlab绘制abaqus装配体

根据inp文件的装配信息,现对部件节点进行平移:

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

现在可以通过叠加绘图的形式绘制整个装配体:

figure(2);
meshplot(parts(1)); % bolt
meshplot(parts(2)); % cover1
meshplot(parts(3));% plate
meshplot(parts(4)); % cover2
title('assembly');


Matlab“稍作修改”Abaqus-odb结果 | 提取三维装配体Mises应力的图8

Matlab读取odb文件的mises数据

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的结果云图,调用一次meshplot函数即可

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结果 | 提取三维装配体Mises应力的图9

整个装配体显示

多次调用meshplot函数进行叠加绘图即可:

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结果 | 提取三维装配体Mises应力的图10


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空