碎屑物沖擊時擋板結構的支護性能模擬
0 引言
這里想要嘗試做的是同濟大學黃雨老師的 Computational assessment of baffle performanceagainst rapid granular flows。 這篇文章從模擬方面論證了不同擋板結構對碎屑物沖擊的支護性能評價。
1、成樣
這里模擬顆粒運移,所以對初始的模型平衡要求并不是特別高,為了計算省事,只solve到-2次方就停止了,有計算條件的同學可以到-5次方。
我們的模型大概是下面這個樣子:
(黃雨等,2021)
這里的建模方式是在水平向進行墻體和顆粒區域的構建,然后將其旋轉到指定角度。在初始模型中,顆粒的前端應當是有擋土結構的。
model newdef parangle=40rdmin=0.004rdmax=rdmin*1.5shiyang_width=0.44shiyang_height=0.15end@pargeometry set "shiyang"geometry generate box [-2.19-shiyang_width] -2.19 0 0.4 0 @shiyang_heightgeometry rotate angle @angle axis (0,1,0) origin (0,0,0)model domain extent [(-2.19-shiyang_width)*math.cos(angle*math.pi/180.0)] ...0 0.4 [(2.19)*math.sin(angle*math.pi/180.0)-shiyang_height] ......ball distribute radius @rdmin @rdmax porosity 0.4 range geometry-space "shiyang" ...insidemodel domain extent -4 1 -1 1 0 4wall generate id 1 box -3 0 0 0.4 one-wallwall generate id 2 polygon (-2.19,0,0) (-2.19,0.4,0) (-2.19,0.4,0.4) ...wall rotate axis (0,1,0) point (0,0,0) angle @angleball attribute density 2.7e3 damp 0.7contact cmat default type ball-facet model linear method deform emod 100e6 kratio 1.5 property fric 0contact cmat default type ball-ball model linear method deform emod 100e6 kratio 1.5 property fric 0.2model cycle 2000 calm 50ball delete range geometry-space "shiyang" outsidemodel gravity 9.8model cycle 1model solve ratio-average 1e-2ball attribute damp 0.2model cycle 1model solve ratio-average 1e-2model save "sample"
生成的模型如圖:
可以看到在重力影響下,式樣是不能維持一開始的方形。
2 下落
這個事情不難,只需要將初始的擋土結構刪掉,式樣便可以在重力作用下實現下落。需要注意的是,由于一開始我們的方形墻體指定的是onewall,所以無法從wall上面直接拿到沖擊力,需要遍歷面片上的接觸來獲得需要的力。這里是每0.5s保存一個sav文件,共計算了10s。
model restore "sample"model mechanical time-total 0def wall_initwp5=wall.facet.find(5)wp6=wall.facet.find(6)end@wall_initdef jiancewhilesteppingforce=0loop foreach ct wall.facet.contactmap(wp5)force+=math.mag(contact.force.global(ct))endlooploop foreach ct wall.facet.contactmap(wp6)force+=math.mag(contact.force.global(ct))endloopendwall delete walls range id 2[baocunpinlv=0.5][time_record=-10][count=0]def savefiletime=mech.time.totalif time-time_record >= baocunpinlv thenfilename=string.build("jieguo%1",count)commandmodel save @filenameendcommandtime_record=timecount +=1endifendfish callback add @savefile -1.0history id 1 @forcemodel cycle 1model solve time 10model save "result"
3 擋板結構模擬
擋板結構我是寫了一個dat,然后在下落的時候call一下,便可以自動生產擋板了。這里比較的為方形和三角形擋板。
即:
(黃雨等,2021)
擋板的邏輯和前面類似,也是先在x-y面上定義,然后旋轉到指定角度上。
方形擋板:
[d=0.4/10.0][DBack=0.4/3.0]geometry set "pile_back"geometry generate box [-d*0.5] [d*0.5] [-d*0.5] [d*0.5] 0 0.3geometry translate -0.42 0 0geometry rotate angle @angle axis (0,1,0) origin (0,0,0)wall import from-geometry "pile_back" name "pile_back_1"def addpile_backwall_count=2loop n(1,3)wall_name=string.build("pile_back_%1",wall_count)commandgeometry translate 0 @DBack 0wall import from-geometry "pile_back" name @wall_nameendcommandwall_count+=1endloopend@addpile_backgeometry set "pile_front"geometry generate box [-d*0.5] [d*0.5] [-d*0.5] [d*0.5] 0 0.3geometry translate -0.21 [DBack*0.5] 0geometry rotate angle @angle axis (0,1,0) origin (0,0,0)wall import from-geometry "pile_front" name "pile_front_1"def addpile_frontwall_count=2loop n(1,2)wall_name=string.build("pile_front_%1",wall_count)commandgeometry translate 0 @DBack 0wall import from-geometry "pile_front" name @wall_nameendcommandwall_count+=1endloopend@addpile_front
三角形擋板:
[d=0.4/10.0][DBack=0.4/3.0]geometry set "pile_back"geometry edge create by-position (0,[-d*0.5],0) ([-d*0.5],0,0) (0,[d*0.5],0) (0,[-d*0.5],0)geometry generate from-edges extrude (0,0,0.3) segments 1geometry triangulate cleangeometry translate -0.42 0 0geometry rotate angle @angle axis (0,1,0) origin (0,0,0)wall import from-geometry "pile_back" name "pile_back_1"def addpile_backwall_count=2loop n(1,3)wall_name=string.build("pile_back_%1",wall_count)commandgeometry translate 0 @DBack 0wall import from-geometry "pile_back" name @wall_nameendcommandwall_count+=1endloopend@addpile_backgeometry set "pile_front"geometry edge create by-position (0,[-d*0.5],0) ([-d*0.5],0,0) (0,[d*0.5],0) (0,[-d*0.5],0)geometry generate from-edges extrude (0,0,0.3) segments 1geometry triangulate cleangeometry translate -0.21 [DBack*0.5] 0geometry rotate angle @angle axis (0,1,0) origin (0,0,0)wall import from-geometry "pile_front" name "pile_front_1"def addpile_frontwall_count=2loop n(1,2)wall_name=string.build("pile_front_%1",wall_count)commandgeometry translate 0 @DBack 0wall import from-geometry "pile_front" name @wall_nameendcommandwall_count+=1endloopend@addpile_front
模型為:
4 結果分析
這種顆粒運移的圖肯定是以動圖為主了。
無擋板
側面:
正面:
方形擋板
側面:
正面:
三角形擋板
側面:
正面:
通過上面的動圖可以非常明顯的感覺到擋板結構對后一段的碎屑物有非常突出的支護性能。
這里看一下運行到5s的時候的力鏈圖:
無擋板:
這里可以明顯的看出,前緣的碎屑物和后緣有力學上的不連續性。
方形擋板:
三角形擋板:
可以看到擋板間形成的土拱有效的抵抗了后緣碎屑物的沖擊。
這里再看一下沖擊力的大小,下圖為三角形擋板支護時的沖擊力,由于初始的顆粒沒有阻礙,所以初期會有很多顆粒以比較大的速度沖擊頂板上,導致初期有比較大的波動。這里用FFT每50點進行平滑處理,處理后的為紅色線。
因為數據量比較大,origin沒抗住,這里用excel簡單畫了一下:
可以看出擋板結構對碎屑流有比較好的支護性能,方形擋板略優于三角形,但是三角形耗材少,具體工程指導得按實際來。
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















