休止角的计算常用的有自然下落,然是这个方法受限制于颗粒数目,而且随机性较大。
而滚筒法在低颗粒数目情况下也能有比较好的模拟效果。
这里给出三种材料的计算结果。
(1)砂土颗粒
首先在生成圆形容器并且生成颗粒,加重力平衡
new
domain extent -1 1
wall generate circle position 0 0 radius 1
ball distribute porosity 0.28 radius 0.006 0.009 range annulus center 0 0 radius 0 [1-0.009]...
plane o 0 0 dip 0 belowcmat default model linear method deformability emod 100e6 kratio 1.74 property fric 0.5
ball attribute density 2.7e3 damp 0.7
cycle 2000 calm 50
set gravity 9.8
solve
save sample
以上为得到初始状态所需的代码。
然后简单的给圆形容器一个滚动速度便可以了,注意墙和球之间的摩擦效率要很大,这样模拟效率高。
ball attribute displacement multiply 0
cmat add model linear method deformability emod 100e6 kratio 1.74 property fric 1.5 range contact type ball-facet
2] =
set mech age 0
mech.age] =
def savefile
if mech.age-time_record > baocunpinlv then
filename=string.build("jieguo%1",count)
command
save @filename
endcommand
time_record=mech.age
count =1
endif
end
set fish callback -1.0 @savefile
wall attribute centrotation 0 0 spin 50
solve time 50
50s效果不够的话,可以继续运行最后一句话。
最后颗粒表面会稳定在某一个角度,这个角度就是休止角。简单用量角器量,或者用图像处理方法得到表面轮廓,进行线性拟合,都可以得到这个角度。
(2)稻谷颗粒
这里介绍一下PFC实现非圆形颗粒的方法——clump
用户可以引入图形轮廓文件,然后生成一个clump模板。
之后便可以像生成ball一样在算例里面生成clump了。
如图:
用户可以指定这个clump的参数,如果计算速度足够的话,这个轮廓可以显示的更加好。
下面给出变形的动图:
我这里没有完全计算完,这个已经算了三天三夜了,有条件的同学可以继续去算,下面附上代码:
new
domain extent -1 1
wall generate circle position 0 0 radius 1geometry import daogu.dxf
clump template create name daogu ...
geometry daogu ...
surfcalc bubblepack ratio 0.3 distance 150
clump distribute porosity 0.18 ...
resolution 1.0 ...
numbin 1 ...
diameter ...
bin 1 size 0.03 0.045 ...
volumefrac 1.0 ...
template daogu ...
range annulus center 0 0 radius 0 [1-0.06]...
plane o 0 0 dip 0 below;clump distribute porosity 0.28 radius 0.006 0.009 range annulus center 0 0 radius 0 [1-0.009]...
o 0 0 dip 0 belowclump attribute density 3e3 damp 0.7
cmat default model linear method deformability emod 100e6 kratio 1.74 property fric 0.5cycle 2000 calm 50
set gravity 9.8
solve
save sample
clump attribute displacement multiply 0
cmat add model linear method deformability emod 100e6 kratio 1.74 property fric 1.5 range contact type pebble-facetset mech age 0
mech.age] =
2] =
def savefile
if mech.age-time_record > baocunpinlv then
filename=string.build("jieguo%1",count)
command
save @filename
endcommand
time_record=mech.age
count =1
endif
end
set fish callback -1.0 @savefile
wall attribute centrotation 0 0 spin 50
solve time 300
(2)碎石颗粒
碎石的堆积角的关键点不是它容易碎,而是它表面的不规则轮廓。
做数值模拟首先要分析,保留你所需要的关键信息。
如果你做碎石的压缩力学之类的东西,那你主要考虑碎石的易碎性。
如果你做这种堆积角,那么碎石的表面不规则性则是你所要考虑的关键!
如图
这里用clump生成一个不规则的碎石模型,然后后面就跟ball一样,这里没有计算到最终状态,已经算了三天三夜了,伤不起。
代码如下:
new
domain extent -1 1
wall generate circle position 0 0 radius 1geometry import kuaiti.dxf
clump template create name gangti ...
geometry kuaiti ...
surfcalc bubblepack ratio 0.3 distance 150
clump distribute porosity 0.12 ...
resolution 1.0 ...
numbin 1 ...
diameter ...
bin 1 size 0.03 0.045 ...
volumefrac 1.0 ...
template gangti ...
range annulus center 0 0 radius 0 [1-0.06]...
plane o 0 0 dip 0 below;clump distribute porosity 0.28 radius 0.006 0.009 range annulus center 0 0 radius 0 [1-0.009]...
o 0 0 dip 0 belowclump attribute density 3e3 damp 0.7
cmat default model linear method deformability emod 100e6 kratio 1.74 property fric 0.5cycle 2000 calm 50
set gravity 9.8
solve
save sample
clump attribute displacement multiply 0
cmat add model linear method deformability emod 100e6 kratio 1.74 property fric 1.5 range contact type pebble-facetset mech age 0
mech.age] =
2] =
def savefile
if mech.age-time_record > baocunpinlv then
filename=string.build("jieguo%1",count)
command
save @filename
endcommand
time_record=mech.age
count =1
endif
end
set fish callback -1.0 @savefile
wall attribute centrotation 0 0 spin 50
solve time 70
这里将稻谷和此处的轮廓图附上,我这里是用adobe illustrate画的二维图,然后导出的dxf
链接见附件