【PFC6.0】三維Cluster模擬混合料混凝土

0 引言

    對于含集料混凝土,集料強度相對于水泥強度高很多,所以一般不會考慮到集料的可破壞性。所以大部分情況下,使用clump來模擬集料混凝土也就夠了。但是在一些特別的受集中力的工況下,集料的破壞也不少見,這種情況就需要去考慮集料的破壞了。

    本文基于已有的研究成果,提出一種以cluster為集料顆粒的混凝土成樣方式,并用單軸實驗來進行測試。

1 成樣

對于混凝土,集料一般不是很多,這里在空間中生成松散的ball代替集料。

model newdef par    width=2    height=width*2        rdmin=0.2    rdmax=0.4        poro=0.8end@par

domain extent [-width*2.0] [width*2.0] [-width*2.0] [width*2.0] ... [-height*2.0] [height*2.0]model random 10001

wall generate box [-width*0.5] [width*0.5] [-width*0.5] [width*0.5] ... [-height*0.5] [height*0.5] expand 1.5ball distribute porosity @poro radius [rdmin] [rdmax] box ... [-width*0.5] [width*0.5] [-width*0.5] [width*0.5] [-height*0.5] [height*0.5] ball attribute density 2e3 damp 0.7contact cmat default model linear method deform emod 100e6 kratio 1.5model cycle 2000 calm 50ball property "fric" 0.5model solvemodel save "sample"


結果如圖所示:

【PFC6.0】三維Cluster模擬混合料混凝土的圖1

2 clump替換

    這里還是用的上一個案例【【PFC6.0】三維Cluster碎石三軸模擬】的clump模板,這個工況對模板的要求不高,可以自行生成模板。


model restore "sample"

def importTemplate loop n(1,4) stlName="Rock"+string(n) fileName="Template\\"+stlName+".p3clp" command clump template import @fileName name @stlName endcommand endloopend@importTemplate

def GetTemplateName rd=math.random.uniform if rd<0.25 then GetTemplateName="Rock1" else if rd<0.5 then GetTemplateName="Rock2" else if rd<0.75 then GetTemplateName="Rock3" else GetTemplateName="Rock4" endifend

[clump_count=1]def tihuan loop foreach bp ball.list x_pos = ball.pos(bp,1) y_pos = ball.pos(bp,2) z_pos = ball.pos(bp,3) bvol = (4/3.0)*math.pi*ball.radius(bp)^3 template_name=GetTemplateName ball.delete(bp) angle= math.random.uniform*180 axis_x=math.random.uniform-0.5 axis_y=math.random.uniform-0.5 axis_z=math.random.uniform-0.5 axis=vector(axis_x,axis_y,axis_z) command clump replicate id @clump_count name @template_name ... pos-x @x_pos pos-y @y_pos pos-z @z_pos ... volume @bvol angle @angle axis @axis clump group @template_name range id @clump_count endcommand clump_count+=1 endloopend@tihuan

clump attribute density 2e3 damp 0.7

cmat default type pebble-facet model linear method deform emod 1000e6 kratio 1.5clump attribute density 2.3e3 damp 0.7





[yasuo_time=5]

wall deletewall generate box [-width] [width] [-width] [width] ... [-height] [height] wall attribute velocity-z [(height*0.5)/yasuo_time] range id 1wall attribute velocity-z [-(height*0.5)/yasuo_time] range id 2wall attribute velocity-x [(width*0.5)/yasuo_time] range id 3wall attribute velocity-x [-(width*0.5)/yasuo_time] range id 4 wall attribute velocity-y [(width*0.5)/yasuo_time] range id 5wall attribute velocity-y [-width*0.5/yasuo_time] range id 6solve time [yasuo_time*0.3] calm 10 solve time [yasuo_time*0.7]wall attribute velocity 0 0 0

model solve

model save "tihuan_clump"


3 集料區域獲取

    這里我們把集料的范圍進行提取,這里用的是clump export geometry方法。把四個clump形狀提取出四個clump geometry。

model restore "tihuan_clump"

geometry delete

clump export geometry set "Rock1" range group "Rock1"clump export geometry set "Rock2" range group "Rock2"clump export geometry set "Rock3" range group "Rock3"clump export geometry set "Rock4" range group "Rock4"



model save "GeoOut"


如圖:

【PFC6.0】三維Cluster模擬混合料混凝土的圖2

4 重生成細顆粒

    這里需要把之前的顆粒刪除,然后重新生成細顆粒,方便在后面把geometry范圍內的顆粒聚合成cluster

model restore "GeoOut"clump delete

[rdmin=0.04][rdmax=0.06][poro=0.3]ball distribute porosity @poro radius [rdmin] [rdmax] box ... [-width*0.5] [width*0.5] [-width*0.5] [width*0.5] [-height*0.5] [height*0.5] ball attribute density 2e3 damp 0.7model cycle 2000 calm 50ball property "fric" 0.5model solvemodel save "re_sample"

如圖:


【PFC6.0】三維Cluster模擬混合料混凝土的圖3

5 加膠結

    這里將不同geometry范圍的顆粒進行膠結。

model restore "re_sample"ball group "Rock1" range geometry-space "Rock1" inside ball group "Rock2" range geometry-space "Rock2" inside ball group "Rock3" range geometry-space "Rock3" inside ball group "Rock4" range geometry-space "Rock4" inside 





cmat default model linearpbond method deform emod 1e9 kratio 1.5 pb_deform emod 1e9 kratio 1.5 ... property pb_coh 10e6 pb_ten 10e6 pb_fa 50 fric 0.1 lin_mode 1cmat add 1 model linear method deform emod 10e9 kratio 1.5 ... property lin_mode 1 range contact type "ball-facet" cmat add 2 model linearpbond method deform emod 5e9 kratio 1.5 pb_deform emod 5e9 kratio 1.5 ... property pb_coh 15e6 pb_ten 15e6 pb_fa 50 fric 0.1 lin_mode 1 range group "Rock1" match 2cmat add 3 model linearpbond method deform emod 6e9 kratio 1.5 pb_deform emod 6e9 kratio 1.5 ... property pb_coh 18e6 pb_ten 18e6 pb_fa 50 fric 0.1 lin_mode 1 range group "Rock2" match 2cmat add 4 model linearpbond method deform emod 7e9 kratio 1.5 pb_deform emod 7e9 kratio 1.5 ... property pb_coh 20e6 pb_ten 20e6 pb_fa 50 fric 0.1 lin_mode 1 range group "Rock3" match 2cmat add 5 model linearpbond method deform emod 8e9 kratio 1.5 pb_deform emod 8e9 kratio 1.5 ... property pb_coh 22e6 pb_ten 22e6 pb_fa 50 fric 0.1 lin_mode 1 range group "Rock4" match 2 cmat apply

model clean

contact method bond gap [rdmin]

contact property lin_force 0 0 0

ball attribute force-contact 0 0 0 moment-contact 0 0 0model calm

model cycle 1

model solve

model save "jiaojie"


如圖:

【PFC6.0】三維Cluster模擬混合料混凝土的圖4

僅顯示集料顆??匆幌拢?/p>

【PFC6.0】三維Cluster模擬混合料混凝土的圖5

顯示參數做個剖面,也能比較好的看出效果:

【PFC6.0】三維Cluster模擬混合料混凝土的圖6

6 加載

model restore "jiaojie"model mechanical time-total 0wall delete walls range id 3 6 ball attribute displacement multiply 0def wall_init    wpUp=wall.find(2)    wpDown=wall.find(1)end@wall_init



[IZ0=wall.pos.z(wpUp)-wall.pos.z(wpDown)]

[strainrate=0.01]wall attribute vel-z [-IZ0*strainrate*0.5] range id 2wall attribute vel-z [IZ0*strainrate*0.5] range id 1

def jiance whilestepping wzss=(wall.force.contact.z(wpUp)-wall.force.contact.z(wpDown))*0.5/(width*width) wlz=wall.pos.z(wpUp)-wall.pos.z(wpDown)end

[final_time=2e-2/strainrate][baocunpinlv=final_time/40.0][time_record=-100][count=0]def savefile time=mech.time.total wezz=(wlz-IZ0)/IZ0 if time-time_record >= baocunpinlv then filename=string.build("jieguo_%1",count) command model save @filename endcommand time_record=time count +=1 endifend

fish callback add @savefile -1.0

program call "fracture.p3fis"

history deletehistory id 1 @wzsshistory id 2 @wezz@track_initmodel solve time @final_time

model save "result"


首先看一下整體情況:

【PFC6.0】三維Cluster模擬混合料混凝土的圖7

    基本上是一個標準的膠結材料單軸的力學特性。

    那再看點好玩的東西。

    寫了一個簡單的接觸分組代碼,可以篩選出當前接觸中的強接觸,分界的閾值時平均力的1.5倍。

    首先單軸工況下,豎向接觸受力,橫向接觸基本不受力。所以這里認為橫向接觸都是弱接觸。強弱的區分只考慮在豎向接觸中


model restore "jieguo_6"

def GetAverageForce allForce=0 num=0 loop foreach ct contact.list("ball-ball") forceVec=math.unit(contact.normal(ct)) dip=math.dip.from.normal(forceVec) if dip<math.pi*0.25 | dip>math.pi*0.75 then allForce+=math.mag(contact.force.global(ct)) num+=1 contact.group(ct,"dirt")="shuxiang" else contact.group(ct,"dirt")="hengxiang" contact.group(ct,"mag")="ruo" endif endloop AverageForce=allForce/float(num)end@GetAverageForce



def ContactGroup test_num=0 loop foreach ct contact.list("ball-ball") if contact.group(ct,"dirt")="hengxiang" then continue endif if math.mag(contact.force.global(ct))> AverageForce*1.5 then contact.group(ct,"mag")="qiang" else contact.group(ct,"mag")="ruo" endif test_num+=1 endloopend@ContactGroup

    區分完后顯示強接觸和geometry,就可以發現集料在混凝土中的骨架性作用了。

【PFC6.0】三維Cluster模擬混合料混凝土的圖8


通過切剖面也可以:

【PFC6.0】三維Cluster模擬混合料混凝土的圖9


再看破壞,質地比較脆的rock1和rock2在破碎面上還是有一些破壞的

【PFC6.0】三維Cluster模擬混合料混凝土的圖10

    取一個剖面分析。對于集料,需要有兩點認識了。在當前參數情況下,水泥參數比較軟,所以力主要由集料承擔,所以集料也控制著破壞。材料失穩必然是集料發生了破壞。第二是破壞后,破裂面其實是會在集料邊緣繞行的。

【PFC6.0】三維Cluster模擬混合料混凝土的圖11

這里應該可分析的東西挺多的,精力有限,暫不做深入的分析。

還是按老規矩,集贊50可得當前項目包。



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

TOP

9
4
19