目录
单轴和巴西劈裂
单轴试验
采用双轴实验的chengyang、yuya、jiajiaojie和fracture文件
对岩石进行卸载
restore jiajiaojie
[txx=1e2]
[tyy=1e2]
cycle 1
solve
save xiezai
设定加载板
restore xiezai
set fish callback -1.0 remove @sevro_walls
wall delete walls range id 2
wall delete walls range id 4
cycle 1
solve
save jiazaiban
进行加载——直接删掉伺服
巴西劈裂成样
构建圆形试样
new
def par
sample_radius=0.4
rdmin=0.006
rdmax=0.009
poro=0.12
end
@par
domain extent [-sample_radius*2.0] [sample_radius*2.0] ...
[-sample_radius*2.0] [sample_radius*2.0]
set random 10001
wall generate circle position 0 0 radius @sample_radius resolution 0.1
;resolution 0.1能够控制圆形的精度,数字越小圆形越精确
ball distribute porosity @poro radius [rdmin] [rdmax] range annulus ...
center 0 0 radius 0 @sample_radius
;给出圆环的内径和外径
ball attribute density 2e3 damp 0.7
cmat default model linear method deform emod 100e6 kratio 1.5
cycle 2000 calm 50
ball property fric 0.5
solve
save sample
巴西劈裂预压
预压:整个圆形的半径减小,对其进行压缩。控制墙体节点的位移(用伺服实现)。
loop循环结构之foreach
loop foreach <local> var expr1 … endloop
对顶点进行速度赋值
loop foreach vt wall.vertexlist(wp) ;把速度给顶点 direct=math.unit(wall.vertex.pos(vt)) ;顶点的位置即为速度的方向 vel_vector=direct*rvel ;得到矢量 wall.vertex.vel(vt)=vel_vector endloop
wall.vertexlist 获取墙体上所有顶点
v = wall.vertex.vel(v<,i>) 获取/设置顶点速度。
restore sample
[trr=1e6] ;应力
[servo_factor=0.5]
[vpOnWall = wall.vertex.find(1)] ;选取在墙体上的一个点
[wp=wall.find(1)] ;得到墙体指针,用在getg部分
;在预压过程中,随着圆形放大或者缩小,圆形的半径发生变化
def calChiCun
wlr=math.mag(wall.vertex.pos(vpOnWall)) ;得出半径
end
;math.mag对矢量取模
def calStress
sumForce=0
loop foreach ct contact.list("ball-facet")
sumForce+=contact.force.normal(ct)
endloop
wsrr=sumForce/(2*math.pi*wlr) ;应力=总力/周长
end
def getg
zongKNR=100e6*2.0
loop foreach ct wall.contactmap(wp)
zongKNR+=contact.prop(ct,"kn")
endloop
gr=1.0*servo_factor*2*math.pi*wlr/(zongKNR*global.timestep)
end
[sevro_freq=100]
[time_record=global.step-1]
def sevro_wall
calStress
if global.step>time_record then
getg
time_record=global.step+sevro_freq
endif
rvel=gr*(wsrr-trr) ;根据应力差来计算速度
loop foreach vt wall.vertexlist(wp) ;把速度给顶点
direct=math.unit(wall.vertex.pos(vt)) ;顶点的位置即为速度的方向
vel_vector=direct*rvel
wall.vertex.vel(vt)=vel_vector
endloop
end
set fish callback -1.0 @sevro_wall
history id 1 @wsrr
cycle 1
solve
save yuya
巴西劈裂加载
预压后加胶结并进行卸载
加胶结
卸载
restore jiajiaojie
[trr=1e2]
cycle 1
solve
save xiezai
加载板
restore xiezai
set fish callback -1.0 remove @sevro_wall ;删去伺服
wall delete
wall create id 1 vertices [-wlr] [wlr] [wlr] [wlr]
wall create id 2 vertices [-wlr] [-wlr] [wlr] [-wlr]
;生成顶板和底板
cycle 1
solve
save jiazaiban
加载
restore jiazaiban
ball attribute displacement multiply 0
[strainRate=1e-1]
wall attribute yvel [strainRate*wlr*2] range id 2
wall attribute yvel [-strainRate*wlr*2] range id 1
def wall_init
wpup=wall.find(1)
wpdown=wall.find(2)
end
@wall_init
def computer_strain
disp=wall.disp.y(wpup)-wall.disp.y(wpdown)
stress=(wall.force.contact.y(wpup)-wall.force.contact.y(wpdown))/(math.pi*2*wlr)
;2P是上部力和下部力的集合(上部力和下部力方向相反)
;2*wlr为其半径,假设此处圆盘只发生小变形,wlr不变
end
set fish callback -1.0 @computer_strain
history delete
history id 1 @disp
history id 2 @stress
call fracture.p2fis
@track_init
[stop_me=0]
def stop_me
if weyy>0.2 then
stop_me=1
endif
end
solve fishhalt @stop_me