PFC_第二章13到16讲
目录
FISH入门
设置重力
new
domain extent -10 10
ball generate radius 0.1 0.3 number 50 box -5 5
wall generate box -5 5
ball attribute density 2e3 damp 0.7
;分配密度和阻尼,damp阻尼系数耗散能量
cmat default model linear property kn 1e6
set gravity 9.8
;一般默认竖向往下
;set gravity 0 -9.8 矢量
cycle 200000
跳跃结构
每秒生成颗粒,共生成了8个颗粒。(重点理解)
new
domain extent -10 10
cmat default model linear property kn 1e6
wall generate box -5 5
set gravity 9.8
[freq=1.0]
[time_next=0]
def jianduan
if mech.age>=time_next then
add_ball
time_next=time_next+freq
endif
end
def add_ball
rad=0.5
x_pos=math.random.uniform*8.0-4
;在-4到4之间出现
pos=vector(x_pos,4.0)
bp=ball.create(rad,pos)
ball.density(bp)=2e3
ball.damp(bp)=0.7
end
set fish callback -1.0 @jianduan
;调用jianduan函数之后,会自动也调用add_ball函数
set timestep fix 1e-3
solve time 8.0
;求解8000步,用time时间8s,实际耗时clock为10s参考)
保存模型状态
new
domain extent -10 10
cmat default model linear property kn 1e6
wall generate box -5 5
ball distribute radius 0.1 0.3 porosity 0.08 box -5 5
ball attribute density 2e3 damp 0.7
cycle 2000 calm 5
;消除初始重叠的影响
solve aratio 1e-5
;设置最大不平衡力
save poro_08
测量圆的使用
在右侧变量区域可以看到要测量的值的结果。
restore poro_08
measure create position 0 0 radius 4.9
;生成了一个半径为9的测量圆
def get_bianliang
mp=measure.find(1)
,measure指的是测量圆的id号
poro=measure.porosity(mp)
;测量测量圆范围内的孔隙率,默认会考虑重叠,因此会和attribute生成的孔隙率有所差别
;误差来源:分布不均匀以及有重叠
stress_xx=measure.stress.xx(mp)
stress_yy=measure.stress.yy(mp)
end
@get_bianliang