木木有限元编程小课堂开课啦!
本次分享的是弹簧支撑的边界条件在程序中如何处理?
本篇推文的灵感来源于:
本次分享不会系统讲述有限元的求解过程,假定你已经有一定的有限元编程基础(杆单元的功底),如果没有也无妨,可移步木木早期推文:二维杆单元。
推文将会围绕以下方面进行分享:
本次所要解决的主要问题示意图如下:
用户可根据本篇推文的理解,在自己程序上进行适当修改,适应自己的程序背景。
对于弹簧支撑的边界条件,可将之看作是混合单元问题,对于今天的案例,看作是两个杆单元和一个弹簧单元组合而成的模型。
模型本身的边界条件为1节点处受到弹簧的支撑作用和外载荷作用,转换为混合单元后,模型就变为4节点处的自由度为0。
那么在程序中如何处理呢?且看下节:
整体刚度矩阵组装分为两步,第一步是组装杆单元,遍历杆单元数量,对单元刚度矩阵按照局部编码和全局编码的原则,组装到整体刚度矩阵中;第二步是组装弹簧单元,遍历弹簧单元的数量,对单元刚度矩阵按照局部编码和全局编码的原则,组装到整体刚度矩阵中,最终的整体刚度矩阵就是模型的整刚。
程序截图如下:
对于弹簧刚度,这里做一个补充。一维情况下的弹簧刚度矩阵为:
二维情况下,弹簧刚度分为 向刚度 和 向刚度 ,弹簧刚度矩阵为:
对于本次案例,可看作是 ,只考虑 的影响,即刚度矩阵变为:
下图所示的模型系统中,探究在力F的作用下,1节点的位移量,解析解为{-1.724,-3.448}。
用今天的转换思想,程序求得的1节点位移量为:{-1.724,-3.448},与解析解一致。
接下来我们来点发挥~试改变弹簧刚度大小,探究一些有意思的问题。
我们把弹簧刚度取小一点,看看能不能模拟无约束的情况。
无弹簧约束时,1节点位移量为:
{-2.381,-4.762}。
弹簧刚度取10时,1节点位移量:
{-2.376,-4.753}
弹簧刚度取1时,1节点位移量:
{-2.381,-4.761}
当弹簧刚度越来越小时,节点1的位移量趋于无弹簧约束时的情况。
y方向有固定约束,在x方向施加F的力,1节点位移量为:
{-1.191}。
弹簧刚度取1.0e5时,1节点位移量:
{-1.250,-0.119}
弹簧刚度取10时,1节点位移量:
{-1.191,-0.001}
会发现随着刚度的增大,y方向的位移逐渐减小,最终趋于0,x方向趋于y方向有固定约束,在x方向施加F的力的情况。
边界条件加入弹簧的作用:
希望可以激发一些小伙伴在研究工作中的灵感,如弹簧减震器之类的领域。
声明:在浩瀚的有限元知识海洋遨游中,发现有意思的点,自己瞎琢磨琢磨,分享出来,乐趣无穷~但由于木木非力学科班出身,水平有限,原创推文均为自己对于数值方法的个人理解,不具权威性,如遇错误、遗漏之处,请各位同行批评指正!