弹簧单元基础篇

例:弹簧串联受外力作用,具体数值如下图所示,求:a)总刚;b)节点2与节点3的位移;c)节点1的反力;d)弹簧内力。


 

一、有限元法求解

步骤1:离散化

单元节点i节点j
112
223

步骤2:写单刚

第一篇:弹簧单元的图2

步骤3:写总刚

第一篇:弹簧单元的图3

步骤4:边界条件

第一篇:弹簧单元的图4



本例中,u1=0,F2=0,F3=1000N,代入上述方程

步骤5:求方程,解u2和u3

利用上述方程不难解出u2=10m,u3=15m,具体不再赘述。

步骤6:后处理,求节点1反力F1与弹簧内力f1、f2

取出相应的方程可求得F1=-1000N,f1=1000N(拉),f2=1000N(拉)。



二、python求解

import numpy as np

# 离散化

ele_node = np.array([[1, 2], [2, 3]])

node_coord = np.array([0, 1, 2])

# 计算单刚

dimen = 1  # 1d

k1 = 100

k2 = 200

def fun(K):

   Ke = np.array([[K, -K], [-K, K]])

   return Ke

# 总自由度数

ndof = dimen * len(node_coord)

# 外力向量

F = np.array([0, 0, 1000])

K = np.array([k1, k2])

# 初始化总刚

K_t = np.zeros((ndof, ndof))

# 计算总刚

for e in range(0, len(ele_node)):

   n1 = ele_node[e][0] - 1

   n2 = ele_node[e][1] - 1

   K_t[np.ix_([n1, n2], [n1, n2])] += fun(K[e])

print(K_t)

# 解u2和u3

k=K_t[1:3, 1:3]

f=F[1:3]

k=np.mat(k)

f=np.mat(f)

u=k.I*f.T

print(u)

# 解支反力F

u=np.mat(u)

U=np.r_[[[0]],u]

U=np.mat(U)

F=K_t*U

print(F)

# 解内力

u1=U[0:2]

u2=U[1:3]

f1=fun(k1)*u1

f2=fun(k2)*u2

print(f1)

print(f2)

计算结果如下图



三、Abaqus求解

步骤1:离散化


步骤2:创建弹簧单元、施加边界条件


步骤3:求解,后处理


结果:

1.整体刚度矩阵如下图:


2.节点2位移u2=10m,节点3位移u3=15m,如下:

第一篇:弹簧单元的图10



3.节点1的支反力F1=-1000N,如下:

第一篇:弹簧单元的图13



4.弹簧单元内力均为1000N,如下:

第一篇:弹簧单元的图15



结论:

不难发现,手工计算、python计算、Abaqus计算结果完全一致。


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

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

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

* 公司名称:

姓名不为空

手机不正确

公司不为空