- 积分
- 0
- 注册时间
- 2010-4-17
- 仿真币
-
- 最后登录
- 1970-1-1
|
new
;-------------------------------------------
def make_wall
_x0=x0
_y0=y0
_z0=z0
_x1=x1
_y1=y1
_z1=z1
_p0=_p0
_ri=_ri
_ro=_ro
loop n (1,6)
command
wall type spiral id n end1 _x0 _y0 _z0 end2 _x1 _y1 _z1 pitch _p0 radin _ri radout _ro
endcommand
_x0=_x0+1640/6
endloop
end
set x0 -1640 y0 0 z0 0
set x1 5400 y1 0 z1 0
set _p0 1640 _ri 320 _ro 450
make_wall
;----------------------------------------------------------
pl sh
pl add wall
wall type cylinder id=7 end1 0.0 0.0 0 end2 5400 0.0 0 rad 320 320
;wall type cylinder id=9 end1 2000 0.0 0 end2 5400 0.0 0 rad 450 450
wall id=8 face (5400,-500,-500) (5400,500,-500) (5400,500,500) (5400,-500,500)
wall id=9 face (0,-2000,-450) (0,2000,-450) (5400,2000,-450) (5400,-2000,-450)
;wall id=9 origin 0.0 0.0 -450 normal 0 0.0 1
;----------------------------------------------------------
;-------------
; ff_cylinder
;-------------
def ff_cylinder
ff_cylinder = 0
_brad = fc_arg(0)
_bx = fc_arg(1)
_by = fc_arg(2)
_bz = fc_arg(3)
_rad = sqrt(_by^2 + _bz^2)
if _rad + _brad < 320 then
ff_cylinder = 1
endif
end
;----------
; assemble
;----------
def assemble
tot_vol = 65*(4400-1000)*400*2
oo = out(string(tot_vol))
rbar = 0.5 * (rlo + rhi)
num = int((1.0 - poros) * tot_vol / (4.0/3.0*pi*rbar^3))
mult = 1.6
rlo_0 = rlo / mult
rhi_0 = rhi / mult
command
gen id=1,num rad=rlo_0,rhi_0 x=1000,4400 y=-200,200 &
z=-450,-320
prop dens=1000 kn=1e7 ks 1e7 fri 100
end_command
ii = out(string(num)+' particles were created')
sum = 0.0 ; get actual porosity
bp = ball_head
loop while bp # null
sum = sum + pi * 4.0 / 3.0 * b_rad(bp)^3
bp = b_next(bp)
end_loop
pmeas = 1.0 - sum / tot_vol
mult = ((1.0 - poros) / (1.0 - pmeas))^(1.0/3.0)
command
ini rad mul mult
end_command
end
set rlo=20 rhi=20 poros=0.5
assemble
def del_my
bp=ball_head
loop while bp # null
bpnext=b_next(bp)
_yy=b_y(bp)
_zz=b_z(bp)
if sqrt(_yy^2+_zz^2) > 450
ii=b_delete(bp)
endif
bp=bpnext
endloop
end
del_my
plo add ball yellow red blue green
prop color 1 range z -450 -417
prop color 2 range z -417 -383
prop color 3 range z -383 -350
prop color 4 range z -350 -320
wall id=1 kn=5e6 ks 5e6 fri 0.6
wall id=2 kn=5e6 ks 5e6 fri 0.6
wall id=3 kn=5e6 ks 5e6 fri 0.6
wall id=4 kn=5e6 ks 5e6 fri 0.6
wall id=5 kn=5e6 ks 5e6 fri 0.6
wall id=6 kn=5e6 ks 5e6 fri 0.6
wall id=7 kn=5e6 ks 5e6 fri 0.6
wall id=8 kn=5e6 ks 5e6 fri 0.6
wall id=9 kn=2e9 ks 2e9 fri 0.6
wall type spiral id 1 xv 0.0 yv 0.0 zv 0.0 xs -1 ys 0.0 zs 0.0
wall type spiral id 2 xv 0.0 yv 0.0 zv 0.0 xs -1 ys 0.0 zs 0.0
wall type spiral id 3 xv 0.0 yv 0.0 zv 0.0 xs -1 ys 0.0 zs 0.0
wall type spiral id 4 xv 0.0 yv 0.0 zv 0.0 xs -1 ys 0.0 zs 0.0
wall type spiral id 5 xv 0.0 yv 0.0 zv 0.0 xs -1 ys 0.0 zs 0.0
wall type spiral id 6 xv 0.0 yv 0.0 zv 0.0 xs -1 ys 0.0 zs 0.0
wall type cylinder id 7 xv 0.0 yv 0.0 zv 0.0 xs -1 ys 0.0 zs 0.0
pl add vel yellow;
set gravity 0.0 0.0 -9.81
ini xvel 0 yvel 1
set damp viscous dt_sfac 10.0
damp default local 0
damp default viscous normal 0.7
damp default viscous notens on
上面是命令流,照着手册上的例子改的,试过很多 次,也看过论坛里面相关的帖子,但总是很快的就穿墙了,不知道怎么弄了,各位大侠帮忙看看,给点意见啊.... |
|