ANSYS中如何實現單向彈簧的模擬
ANSYS中如何實現單向彈簧的模擬
在前面幾期的文章中,本人介紹了在ANSYS中如何實現彈性地基的模擬,其中既使用了本身可以設置彈性地基剛度的特殊單元,也采用了彈簧單元來間接實現。然而一個不可避免的現象便是在實際中,其實有很多情況下地基是既受拉又受壓的,如果繼續采用特殊單元,則不能考慮這點。也即是這些特殊的單元無法考慮單向受壓的情況,例如在隧道二次襯砌分析中,外部等效圍巖就不能使用這些特殊單元。
在前面一期中也介紹了如何使用combin39單元來實現彈性地基的模擬,使用該單元的一個好處便是可以考慮單向作用。本文就簡單介紹如何使用該單元實現單向彈簧的模擬。
要利用該單元實現單向彈簧,首先要讀懂該單元各個單元關鍵項的意思,該單元有很多關鍵項,不同的設置會有不同的單元表現。該單元一共有八種單元表現,羅列如下:



從上述單元表現可見,第B種和第e種情況可實現單向彈簧的功能,這兩者的主要區別在于一個是卸載路徑與原加載路徑相同,一種是卸載路徑與加載路勁的原點段平行。
細心的同學可以發現,這兒combin39所謂的單向是指受拉單向,也即是該單元只提供單向受拉的功能,如果要實現我們口中所謂的單向受壓,則需要一定的建模技巧。
為驗證該單元的單向功能,下面我們做一個小實驗。
命令流如下:
finish
/clear
/prep7
et,1,combin39
!Z方向的單向彈簧
keyopt,1,4,0
keyopt,1,3,3
keyopt,1,1,0
keyopt,1,2,1
n,1
n,2,0,0,1.0
!彈簧的初始彈性模量為100
r,1,0.1,100*0.1
e,1,2
d,1,all,0
allsel,all
!彈簧受到拉力100,可以預見最大位移為1
f,2,fz,100
/solu
allsel,all
nsubst,10,,1
autots,on
solve
結果位移云圖如下:

在上述命令流下,我們將拉力改為壓力,可以預見,由于彈簧只是受拉彈簧,因此結果應該為0.
修改的命令流如下:
!==============
f,2,fz,-100
!=============
修改之后求解,雖然軟件顯示的是solution is done,然而并沒有位移結果,這也表明,該彈簧不能模擬受壓。

在保持上述命令流不變的情況下,我們在做一個改變,具體改變就是在單元建立的時候,調換下生成單元的節點序號,也即修改的命令如下:
!===========
e,2,1
!===========
修改之后我們會發現,結果如下:

從這個位移云圖可見,彈簧被壓縮了1,而這與我們口中所說的受壓情況很符合。
綜合這個小實驗,我們可以得到一些有用的結論:
1、Combin39只能模擬單向受拉.
2、Combin39所謂的拉應變是指沿著單元坐標系X的正方向,如果我們需要模擬單向受壓,只需調整該單元的單元坐標系。
為體現該單元使用上的一些技能,設有某矩形大板,長80m,寬40m,在中間3m范圍內作用有均布荷載,地基剛度為20MPa,采用ANSYS模擬該過程。

一個可以預見的結果便是 由于該板相對于加載面積來講,其長邊太長,會有一種中間凹兩邊凸的直觀效果,因此如果采用彈簧模擬彈性地基,兩邊的彈簧會處于受拉狀態,然而事實是我們只希望地基彈簧只受壓不受拉,受拉彈簧退出工作。
我們采用combin39來模擬該過程。命令流如下:
!===========
finish
/clear
/prep7
A=80$B=40$H=0.6
A1=3$B1=2
Q=150e3
ESF=2.0e7 !彈性地基剛度
ET,1,solid186
et,2,surf154 !輔助表面效應單元
et,3,combin39
keyopt,3,4,0
keyopt,3,3,3
keyopt,3,1,0
keyopt,3,2,1
!建模
!===========
!===================
allsel,all
*get,tmmax,node,,num,max !整個模型的最大節點號
esel,s,type,,2
nsle,s,corner
*get,ntol,node,,count !節點總數
*get,etol,elem,,count !單元總數
*get,nmax,node,,num,max !最大節點號
*dim,nodno,,ntol !存儲節點號
*dim,nodk,,nmax !存儲各節點面積、彈簧剛度
*dim,eleno,,etol !存儲單元號
!獲得各個單元號
*get,e1,elem,,num,min
eleno(1)=e1
*do,i,2,etol
e1=elnext(e1)
eleno(i)=e1
*enddo
!獲得各節點號
*get,n1,node,,num,min
nodno(1)=n1
*do,i,2,ntol
n1=ndnext(n1)
nodno(i)=n1
*enddo
!求每個節點對應的面積
*do,i,1,etol
ei=eleno(i)
n1=nelem(ei,1)
n2=nelem(ei,2)
n3=nelem(ei,3)
n4=nelem(ei,4)
*get,ai,elem,ei,area
*if,n3,ne,n4,then
ai=ai/4.0
nodk(n1)=nodk(n1)+ai
nodk(n2)=nodk(n2)+ai
nodk(n3)=nodk(n3)+ai
nodk(n4)=nodk(n4)+ai
*else
ai=ai/3.0
nodk(n1)=nodk(n1)+ai
nodk(n2)=nodk(n2)+ai
nodk(n3)=nodk(n3)+ai
*endif
*enddo
!求得彈簧剛度
*do,i,1,nmax
nodk(i)=nodk(i)*ESF
*enddo
*do,i,1,ntol
ni=nodno(i)
r,i+1,0.01,nodk(ni)*0.01
*enddo
!創建彈簧單元
type,3
*do,i,1,ntol
ni=nodno(i)
n,tmmax+i,nx(ni),ny(ni),nz(ni)-0.5 !創建節點(重合)
real,i+1
!注意此處生成彈簧單元節點順序,改變了順序也即是改變了單元坐標系X的方向。
e,ni,tmmax+i
*enddo
nsel,s,,,tmmax+1,tmmax+ntol
d,all,all
finish
/solu
allsel,all
nsubst,100,,1
autots,on
solve
!===============
最后的豎向位移云圖如下:

可見其位移趨勢符合常識。彈簧單元的軸力云圖如下:


從圖中可見,只有中部彈簧受力,兩邊受拉彈簧軸力為0,說明該過程有效的實現了單向彈簧作用。
有興趣的童鞋還可以用combin14做對比,水哥這里就不在演示了。
歡飲關注微信公眾號:ANSYSABAQUS
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















