首页/文章/ 详情

C3D8单元B-bar方法 | 公式推导+数值实现

1天前浏览7

上次推文分享了三维单元的选择性减缩积分技术,该技术将应力分解为体积应力部分和偏应力部分,适用于各向同性的弹性材料,难以扩展到弹塑性材料、轴对称、各向异性、大变形等问题上。

为增加普适性,Hughes    将几何矩阵    分解为体应变部分    和偏应变部分    ,然后对体应变部分    做出某种改进(记为    ),称为B-bar方法,即:

 

本篇推文将为大家分享三维线性单元的B-bar方法。

公式推导

单元的几何矩阵    可写为:

 

其中,    表示单元节点个数,子块矩阵    可写为:

 

其中,    ,    表示与节点    关联的形函数,    表示自由度号,体应变部分    可表示为:

 

偏应变    : 


为适应不可压缩材料,体应变部分    需要加一个bar:

 

   的取值可以为单元形心处的值,即:

 

本节的程序中采用了形心处的值,读者也可采用单元体积内的平均值:

 

最终的几何矩阵    可转化为    

 

最终的单元刚度矩阵可写为:

 

写到这里,程序已经可以顺着公式往下编写了,如果需要对矩阵    的各个元素进行具体细化,可以进一步写为:

 

其中,

 

数值案例

由Abaqus帮助文档中:Abaqus->Theory->Elements->Continuum elements->Solid isoparametric quadrilaterals and hexahedra可以看出,为了避免mesh locking,对于轴对称单元平面应变单元三维线性单元均做了修正。以致于平时按照课本上的C3D8单元格式编制程序的单元刚度矩阵和Abaqus的C3D8单元刚度矩阵不同。

本小节将B-bar方法修正后的C3D8单元与Abaqus内置的C3D8单元进行做对比,对比内容有位移场、应力场、单元刚度矩阵,模型还是延续上几节的板模型。

内置C3D8单元Umag    
内置C3D8单元Mises    
C3D8Bar单元Umag    
C3D8Bar单元Mises    

从上面的云图对比中可以看出,与Abaqus的吻合度极高,那再来看一下刚度矩阵是否与Abaqus一致呢?以第1000号单元刚度矩阵为例:

 
 

可能肉眼看的不是很精确,那就写段程序看一下两个矩阵的元素相差精度:

abaqusMat = Element1000Stiffness; % 第1000号单元刚度矩阵(Abaqus内置的C3D8单元)
matlabMat = solver.ElementMatrix{1000,1}; % 第1000号单元刚度矩阵(自研的C3D8Bar单元)

tolerance = 1e-7% 设置容差
abs_diff = abs(abaqusMat - matlabMat);
max_diff = max(abs_diff(:));

if max_diff <= tolerance
    disp('矩阵在容差范围内相同');
else
    disp('存在超出容差的差异');
    disp(['最大差异: ', num2str(max_diff)]);
end

最终显示容差为    ,基本可以认为两者矩阵一致。


[1] Hughes, Thomas J. R.The finite element method: linear static and dynamic finite element analysis 2000

-End-

来源:易木木响叮当
AbaqusMATLABUGUM材料
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-06-11
最近编辑:1天前
易木木响叮当
硕士 有限元爱好者
获赞 255粉丝 365文章 385课程 2
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈