- 积分
- 0
- 注册时间
- 2010-12-28
- 仿真币
-
- 最后登录
- 1970-1-1
|
本帖最后由 xiaoxiaoyue 于 2011-12-6 17:24 编辑
做一个反复运动的分析,大致问题是这样的:模型分为上下左右四道边墙,想用左边墙上下往复按照正弦函数运动,通过平行连接将上下及左边墙连接在一起,在左边墙赏析运动的过程中,带动上下两道墙一起运动。
问题来了:当不将3道墙连接在一起时,只对左边墙施加正弦速度时,左边墙能够按照正弦速度上下运动,将3道墙通过并行连接后,左边墙的速度不按照正弦速度运行。
图片中,蓝色颗粒为固定上下两道墙用的,使其只能转动。附上程序代码,麻烦高手给我看看吧,折腾好几天了,都过不去,论文没法往下做了,不胜感激呀!!!!
new
def make_leftball
xc=x0
yc=y0
rc=radius
r2=2*radius
idc2=id_start
loop n(1,10)
command
ball id=idc2 x=xc y=yc rad=rc
prop dens=1000 kn=1e8 ks=1e8
end_command
yc=yc-r2
idc2=idc2+1
end_loop
end
set echo off
set y0=14.0 x0=0 radius=1 id_start=200
set echo on
make_leftball
def make_topball
xc=x0
yc=y0
rc=radius
idc1=id_start
r2=2*radius
loop n (1,8)
command
ball rad=radius x=xc y=yc id=idc1
prop dens=1000 kn=1e8 ks=1e8
end_command
xc=xc-r2
idc1=idc1+1
end_loop
end
set echo off
set x0=16 y0=10 radius=1 id_start=100
set echo on
make_topball
def make_downball
xc=x0
yc=y0
rc=radius
idc3=id_start
r2=2*radius
loop n (1,8)
command
ball rad=radius x=xc y=yc id=idc3
prop dens=1000 kn=1e8 ks=1e8
end_command
xc=xc+r2
idc3=idc3+1
end_loop
end
set echo off
set x0=2 y0=0 radius=1 id_start=300
set echo on
make_downball
def make_rightball
xc=x0
yc=y0
rc=radius
r2=2*radius
idc4=id_start
loop n(1,4)
command
ball id=idc4 x=xc y=yc rad=rc
prop dens=1000 kn=1e8 ks=1e8
end_command
yc=yc+r2
idc4=idc4+1
end_loop
end
set echo off
set y0=2 x0=14 radius=1 id_start=400
set echo on
make_rightball
ball id=1000 rad=1 x=14 y=-2
ball id=1001 rad=1 x=14 y=12
prop kn=1e8 ks=1e8 range id=1000,1001
prop xvel=0 yvel=0 range id=1000,1001
fix x y spin range id=1000,1001
fix x y spin range id=200,idc2
fix spin range id=400,idc4
prop pb_rad=1.1 pb_s=1e18 pb_n=1e18 range id=200,idc2;将左边墙和上下墙链接在一起
;prop pb_kn=1e18 pb_ks=1e18 c_index 1 range id=100,idc3
;prop pb_rad=1.1 pb_s=1e10 pb_n=1e10 range id=400,idc4;右边颗粒墙连接
;prop pb_kn=1e14 pb_ks=1e14 c_index 3 range id=400,idc4;右边颗粒墙连接
def startup
old_time=time
omega=freq*2.0*pi
end
;----------------------------------------------------
def shake
while_stepping
real_time=time-old_time
if real_time<tlength
vel=ampl*sin(omega*real_time+90*degree)
oo=out('颗粒剪切速度' +string(vel))
else
vel=0.0
end_if
command
prop yvel=vel range id=200,idc2
end_command
end
pl add ball lgreen
pl show
set freq=.20 ampl=5 tlength=18000.0
set time 0.0
startup
shake
set grav=0 -10
cycle 3000
请高手您关注这一段程序:
prop pb_rad=1.1 pb_s=1e18 pb_n=1e18 range id=200,idc2;将左边墙和上下墙链接在一起
;prop pb_kn=1e18 pb_ks=1e18 c_index 1 range id=100,idc3
;prop pb_rad=1.1 pb_s=1e10 pb_n=1e10 range id=400,idc4;右边颗粒墙连接
;prop pb_kn=1e14 pb_ks=1e14 c_index 3 range id=400,idc4;右边颗粒墙连接
这里面如果将prop pb_rad=1.1 pb_s=1e18 pb_n=1e18 range id=200,idc2;里面的范围改为id=100,id3也就是将3道墙连接在一起,正弦速度根本就不是正弦速度。
麻烦您给看看吧!!
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
×
|