中心开孔方板的Matlab有限元编程


前言

这篇博文是我初次学习有限元的一次总结,虽然只是对一个很简单的问题的求解,但这个过程已经包含了有限元分析的完整步骤。对于更加复杂的有限元的分析问题,无非是在建模、网格划分和求解大规模矩阵方程的算法等方面进行优化。所以这篇博文对初学者希望对有限元分析的过程以及编程有一个初步了解是有帮助的,更高级、更难的问题的求解这里是没有涉及的,当然希望有这方面经验的大佬能不吝赐教,这里先谢过啦~~


一、问题提出

考虑如下图的中心开孔方板,上部受到均匀的剪切荷载,下部固支。圆孔圆心与正方形中心重合。该板处于平面应力状态,弹性模量为E=100,泊松比μ=0.3,厚度h=1。下面将使用有限元程序求解此结构的变形图。
在这里插入图片描述

二、求解步骤

1.单元剖分

按照有限元的分析流程,要先对悬臂梁进行单元剖分,确定单元与结点编号、以及单元的自由度编号。因为这里是平面应力问题,所以可以采用常应变三角形单元进行网格划分,并且采用的是非结构化的网格。我这里采用的Matlab的pdetool工具进行划分的,详细步骤可以参照下面。当然这里也可以自己编程进行划分,但限于篇幅和介绍的详细程度,这里不会进行讨论。

  • 在matlab中输入pdetool并回车,打开该工具。
>> pdetool
  • 在打开的工具中,进行模型的建立,如下图所示。
    在这里插入图片描述

  • 网格划分,点击Mesh——Initialize Mesh进行初次网格划分,再次点击Mesh——Refine Mesh加密网格,可得到下图。
    在这里插入图片描述

  • 导出网格数据。点击Mesh——Export Mesh…导出网格,重命名变量名为node e element,这里node存储结点的坐标信息,element存储的是单元信息,e我们暂时不会用到。在这里插入图片描述

  • 存储网格划分数据。在Matlab的命令窗口输入以下命令,按我们所需要的格式存储node和element到Mesh.mat文件中。

>> element = element';
>> element = element(:,1:3);
>> node = node';
>> save('Mesh.mat','node','element')

2.单元分析

在该结构中采用的是常应变三角形单元,在整体坐标系中单元刚度矩阵均用下式进行计算(i,j,m进行轮换就可以得到 b j 、 c j 、 b m 、 c m b_j、c_j、b_m、c_m bjcjbmcm):
b i = y j − y m c i = − x j + x m [ k ] e = [ B ] T [ D ] [ B ] h Δ [ B ] = 1 2 Δ ( b i 0 b j 0 b m 0 0 c i 0 c j 0 c m c i b i c j b j c m b m ) b_i = y_j - y_m\newline c_i = -x_j + x_m\\ [k]^e = [B]^T[D][B]h\varDelta\\ [B]=\frac 1 {2\varDelta}\begin{pmatrix} b_i & 0&b_j&0&b_m&0 \\ 0&c_i &0&c_j&0&c_m \\ c_i&b_i&c_j&b_j&c_m&b_m \end{pmatrix} bi=yjymci=xj+xm[k]e=[B]T[D][B]hΔ[B]=2Δ1bi0ci0cibibj0cj0cjbjbm0cm0cmbm
因为求解的问题是平面应力问题,这里的本构矩阵 [ D ] [D] [D]采用如下形式:
[ D ] = E 1 − μ 2 ( 1 μ 0 μ 1 0 0 0 1 − μ 2 ) [D]=\frac {E} {1-\mu^2}\begin{pmatrix} 1& \mu&0 \\ \mu &1&0 \\ 0&0&\frac {1-\mu} {2} \end{pmatrix} [D]=1μ2E1μ0μ100021μ

3.单元组装

根据单元组装的对号入座原则,即可得到整体刚度矩阵。另外整体载荷向量中只有悬臂梁上端的结点的向下的自由度上非零,其它位置均为0。

4.引入支座约束求解

在自由度编号为悬臂梁的左侧位置上为固定支座约束,即位移均为零,据此提取出非支座自由度得到刚度方程求解即可得到位移。

大家看到这里对于第3、4步或许有很多疑问,其实这里对于初学者确实如此,但只要入门了这里在编写代码是很容易的。如果大家需要这个项目的源码,可以在链接appendix.rar下载。源码是有详细的注释的!!!

三、结果

变形图如下图所示
在这里插入图片描述

  • 3
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 31
    评论
本书的第1 章简要地介绍了 MATLAB 的基本知识和编程中常用的语句及函数 , 使者能够阅读本书各章节中的程序。 第2 章系统地介绍了有限元的理论基础———微分方程的近似解法。 这部分内容在一的有限元书籍中是很少介绍的 , 它不仅可以使我们了解有限元的发展过程 , 也能够使读者加深对有限元方法的理解。 第3 章介绍了广义坐标有限元方法。 它是物理坐标下的直接方法 , 读者可以通过该章的学习了解和掌握有限元方法的一般步骤。 第4 章简要介绍了有限元编程方法。 与大多数有限元书籍不同的是 , 用其他高级语言编写有限元程序时所需的一般编程技巧在 MATLAB 中不再需要 , 因此 , 本书不再赘述。 第5 章详细讨论了构造单元和插值函数的原则和方法 , 并着重讨论了在实际中有着广泛应用的等参数单元的构造方法和表达格式 , 以及与广义坐标单元的变换方法。 第6 章和第7 章讨论了杆系结构有限元问题。由于杆系结构与一般的二维和三维弹性体结构有较大的区别 , 因此 , 杆系结构的单元及其插值函数是区别于一般二维和三维单元的特殊单元 , 同时 , 桁架的杆单元和框架的梁单元也是完全不同的两类单元。 第8 章详细讨论了一般弹性力学问题的有限元方法 , 包括稳定问题和动力学问题。 第9 章讨论了板问题的有限元方法 , 其中介绍了多种类型和不同位移模式的板单元 ,包括用于复合材料结构的层状单元。 第10 章介绍了系统建模、 线性系统分析及结构振动控制的基础知识 , 并详细地介绍了如何用 MATLAB 来实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值