1.建模&第一次平衡
model new
zone create radial-cylinder point 0 0 0 0 point 1 add 18 0 0 ...
point 2 add 0 8 0 point 3 add 0 0 18 ...
dim 1.75 1.75 1.75 1.75 ratio 1.0 .83 1.0 1.2 ...
size 6 6 6 15 fill group 'exc'
zone create radial-cylinder point 0 0 8 0 point 1 add 18 0 0 ...
point 2 add 0 8 0 point 3 add 0 0 18 ...
dim 1.75 1.75 1.75 1.75 ratio 1.0 1.2 1.0 1.2 ...
size 6 6 6 15 fill group 'name'
zone face skin
zone cmodel assign mohr-coulomb
zone property bulk 33.33e9 she 25e9 fric 45 cohesion 15e6 ten 5e6
zone face apply velocity-normal 0 range group 'West' or 'East'
zone face apply velocity-normal 0 range group 'South' or 'North'
zone face apply velocity-normal 0 range group 'Bottom' or 'Top'
; Initial Conditions
zone initialize stress xx -65e6 yy -65e6 zz -65e6
model solve
model save 'initial'
1-①.瞬时开挖sinstantaneous excavation ★★★★★★注意瞬时开挖和逐步开挖的区别★★★★★★
; 瞬时开挖sinstantaneous excavation
zone delete range group 'exc'
zone face skin break-angle 20 ;挖掉之后再次进行分组,设置折断角是为了圆柱面与底面分开
model solve
model save 'instant'
1-②.; 逐步开挖gradual excavation ★★★★★★注意瞬时开挖和逐步开挖的区别★★★★★★
; 逐步开挖gradual excavation
model restore 'initial'
zone relax excavate range group 'exc'
model solve
model save 'relax'
2.圆柱面施加法向应力
model restore 'initial'
zone delete range group 'exc'
zone face skin break-angle 20 ;挖掉之后再次进行分组,设置折断角是为了圆柱面与底面分开
zone face apply stress-normal -1e10 range group "West1"
球面面施加法向应力
1.模型建立&表面分组
model new
fish define parm
rad = 45.0 ; radius of the sphere球的半价
len = 80.0 ; length of outer cube edge立方体外边缘的长度
in_size = 20 ; number of zones along the outer cube edge沿着立方体外的网格数
rad_size = 30 ; number of zones in the radial direction径向内的网格数
end
@parm
zone create radial-brick edge 80 size @in_size @in_size @in_size @rad_size ratio 1 1 1 1.01 dimension @rad @rad @rad
fish define make_sphere
; Loop over all GPs and remap their coordinates:历遍所有节点然后从新分配他们的坐标
; assume len>rad 假设立方体边沿长度大于半价
p_gp=gp.head ;节点id
loop while p_gp#null ;当节点id不为空的时候
; Get gp coordinate: P=(px,py,pz)得到节点坐标
px=gp.pos.x(p_gp)
py=gp.pos.y(p_gp)
pz=gp.pos.z(p_gp) ;p?等于节点轴数值
; Compute A=(ax,ay,az)=point on sphere radially "below" P 计算 A = (ax,ay,az)=P "小于"径向球面上的点
dist=math.sqrt(px*px+py*py+pz*pz) ;球面距离公式
if dist>0 then ;距离不等于0时
k=rad/dist ;半径和距离的比值
ax=px*k
ay=py*k
az=pz*k
; Compute B=(bx,by,bz)=point on outer box boundary radially "above" P.大于球面的但是小于立方体边界的点
maxp=math.max(px,math.max(py,pz)) ;选取xyz最大值
k=len/maxp ;外围边界值和最大坐标值的比值
bx=px*k
by=py*k
bz=pz*k ;B的重新定义
; Linear interpolation: P=A+u*(B-A)直线切削
u=(maxp-rad)/(len-rad)
gp.pos.x(p_gp)=ax+u*(bx-ax)
gp.pos.y(p_gp)=ay+u*(by-ay)
gp.pos.z(p_gp)=az+u*(bz-az)
end_if ;点正好在球面上,直接跳过不处理
p_gp=gp.next(p_gp)
end_loop ;结束循环
end
@make_sphere
zone face skin
2.球面施加应力
zone cmodel assign elastic
zone property bulk 1e10 shear .3e9 density 1980
zone face apply stress-normal -1e10 range group 'bottom2'
zone face apply velocity-normal 0 ...
range group 'North' or 'South' or ...
'East' or 'West' or 'Bottom'
; solve