第一篇:彈簧單元

序:我要寫一期python和Abaqus與有限元的文章,從彈簧單元、桿單元一直到實體單元,通過簡單的實例用python編程,Abaqus驗證結果。

例:彈簧串聯受外力作用,具體數值如下圖所示求:a)總剛;b)節點2與節點3的位移;c)節點1的反力;d)彈簧內力

第一篇:彈簧單元的圖1

一、有限元法求解

步驟1:離散化

單元

節點i

節點j

1

1

2

2

2

3

步驟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)

計算結果如下圖

第一篇:彈簧單元的圖5

三、Abaqus求解

步驟1:離散化

第一篇:彈簧單元的圖6

步驟2:創建彈簧單元、施加邊界條件

第一篇:彈簧單元的圖7

步驟3:求解,后處理

第一篇:彈簧單元的圖8

結果:

1.整體剛度矩陣如下圖:

第一篇:彈簧單元的圖9

2.節點2位移u2=10m,節點3位移u3=15m,如下:

第一篇:彈簧單元的圖10


第一篇:彈簧單元的圖11第一篇:彈簧單元的圖12

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

第一篇:彈簧單元的圖13


第一篇:彈簧單元的圖14

4.彈簧單元內力均為1000N,如下:

第一篇:彈簧單元的圖15


第一篇:彈簧單元的圖16

結論:

不難發現,手工計算、python計算、Abaqus計算結果完全一致。




我看后臺有朋友回復我做設計的都開始搞有限元了,哈哈!其實這幾年我一直搞專用車力學工作,當時起了個專用車設計名字打算分享一些與專用車設計相關的好文章。我發現寫文章比日常工作費力的多,不知下一篇是不是又要2年以后了。






登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

7
2
5