找回密码
 注册
Simdroid-非首页
查看: 97|回复: 3

[其他] 【求助】ball命令的接触模式改为hertz后小球漏下去了

[复制链接]
发表于 2013-9-28 22:37:25 | 显示全部楼层 |阅读模式 来自 陕西西安
我做了一个颗粒逐个在重力下落到圆筒中的小程序,用 ball 命令一个个生成球。采用的是默认的线性接触模型,没有问题。

在ball生成球命令里面加入hertz后,颗粒就直接穿过圆筒底部漏下去了,做重力加速运动。这是怎么回事啊?

跪求高手解答~~
发表于 2013-9-30 23:18:25 | 显示全部楼层 来自 美国
Simdroid开发平台
程序贴出来看看
回复 不支持

使用道具 举报

 楼主| 发表于 2013-11-1 14:56:10 | 显示全部楼层 来自 陕西西安

;fname: fall-cyclinder.dat              ; 采用逐个坠落生成无序堆积  3D 圆筒

new
SET random                                   ; 设置随机数发生器

def explode
n_stiff   = 1e8                              ; 定义法向刚度
s_stiff   = 1e8                              ; 定义切向刚度
f_stiff   = 0.2                                ; 定义摩擦系数
radius    = 5.0                              ; 圆筒半径
height    = 200.0                            ; 圆筒高度
height1   = 20.0                             ; 小球生成区域高度
poros     = 0.39                             ; 目标孔隙率
n_max     = 30                              ; 生成颗粒数
rlo       = 2.5                              ; 产生球半径

height2 = height-height1

command                                      ; 生成圆筒壁面
  wall id=1 type cylinder end1=(0.0 0.0 0.0) end2=(0.0 0.0 height) &
       rad=(radius radius) kn=n_stiff ks=s_stiff fric=f_stiff;
  wall id=2 normal (0 0 1) origin (0.0 0.0 0.0) kn=n_stiff ks=s_stiff fric=f_stiff;
  wall id=3 normal (0 0 -1) origin (0.0 0.0 height) kn=n_stiff ks=s_stiff fric=f_stiff;
set echo off
end_command

                                             ; 设置控制数
count    = 1

;-----------------------------------------------------创建第一个球及显示
r_ball   = rlo
rb2   = r_ball * 2.0
x_ball = (1-2*urand) * (radius  -r_ball )
y_ball = (1-2*urand) * sqrt((radius - r_ball)*(radius - r_ball)-x_ball*x_ball)
z_ball = height
   ;z_ball = r_ball + urand * (height1 - rb2)+height2

command
ball id=1 x=x_ball y=y_ball z=z_ball rad=r_ball
prop dens=1000.0 ks=s_stiff kn=n_stiff
set grav 0 0 -9.81
cyc 1500
end_command
;---------------------------------------------------------

command
plot create Footing                         ; 创建显示
plot set title text 'Basic collection of particles in a box'
plot set center 1.578 2.818 50
plot set dist 400
plot set rotation 30 0 30
plot add ball yellow
plot add axes brown
plot show
set plot avi
set plot avi size 640 480
movie avi_open fallcyc.avi
movie step 300 1 fallcyc.avi
end_command


;---------------------------------------------------------------------------


section                                      ; 逐个生成指定半径球,可能堆叠
loop n (2,n_max)
r_ball   = rlo
rb2   = r_ball * 2.0
x_ball = r_ball + (1-2*urand) * (radius  - rb2)
y_ball = (1-2*urand) * sqrt((radius - r_ball)*(radius - r_ball)-x_ball*x_ball)
z_ball = height
                ;z_ball = r_ball + urand * (height1 - rb2)+height2
command
ball id=n x=x_ball y=y_ball z=z_ball rad=r_ball
prop dens=1000.0 ks=s_stiff kn=n_stiff

set grav 0 0 -9.81
cyc 1500

end_command
count   = count + 1

end_loop
end_section

aaa='   '                                   ; 报告指定孔隙率数量的球已生成
bbb='balls were created'
ii       = out(aaa+string(count)+bbb)
end

;--------------------------------------------------------------------------------


explode                                     ; 执行生成球


set hist_rep=5                              ; 监视不平衡力和某球z向速度
hist ball zvel 3 1 0
hist diagnostic muf



set grav 0 0 -9.81
cyc 7000



plot create the_view                        ; 绘图显示
plot add ball yellow
plot add axes black
plot set rotation (30 0 30)
plot show
print ball position                         ; 显示球心位置
print count                                 ; 显示颗粒数目
movie avi_close fallcyc.avi
回复 不支持

使用道具 举报

 楼主| 发表于 2013-11-1 15:10:34 | 显示全部楼层 来自 陕西西安

程序已经贴出来了,除了(1)ball 命令的接触模式改为hertz后小球漏出圆筒中以外,还有一个问题;(2)在用该程序运行后得到一系列小球球心的坐标,计算球心到z轴距离+球半径,发现有部分大于圆筒半径,即小球超出了圆筒的范围。
求教大神,不知该如何解决?谢谢
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-5-22 08:43 , Processed in 0.032617 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表