def inisoil
array soil_z(20)
array soil_depth_seg(20)
global_group_id=1
end
inisoil
def set_soil
soil_z(1)=0
soil_z(2)=-1.4
soil_z(3)=-3.3
soil_z(4)=-10.5
soil_z(5)=-15.1
soil_z(6)=-19
soil_z(7)=-24
soil_z(8)=-26.8
soil_z(9)=-38.7
soil_z(10)=-61.2
soil_depth_seg(1)=2
soil_depth_seg(2)=2
soil_depth_seg(3)=5
soil_depth_seg(4)=2
soil_depth_seg(5)=2
soil_depth_seg(6)=2
soil_depth_seg(7)=1
soil_depth_seg(8)=3
soil_depth_seg(9)=4
end
set_soil
def fine_grid
fine_grid_size=4*pile_radius
end
def generate_the_field
loop n(1,soil_num)
p0x=0
p0y=0
p0z=soil_z(n)
p1x=boundary_size
p1y=0
p1z=soil_z(n)
p2x=0
p2y=0
p2z=soil_z(n+1)
;to assert that p2z<p0z
if p2z>p0z
oo=out('p2z<p0z,gen zone error!')
endif
p3x=0
p3y=boundary_size
p3z=soil_z(n)
p4x=boundary_size
p4y=0
p4z=soil_z(n+1)
p5x=0
p5y=boundary_size
p5z=soil_z(n+1)
p6x=boundary_size
p6y=boundary_size
p6z=soil_z(n)
p7x=boundary_size
p7y=boundary_size
p7z=soil_z(n+1)
p8x=fine_grid_size
p8y=0
p8z=soil_z(n)
p9x=0
p9y=fine_grid_size
p9z=soil_z(n)
p10x=fine_grid_size
p10y=0
p10z=soil_z(n+1)
p11x=0
p11y=fine_grid_size
p11z=soil_z(n+1)
d1=fine_grid_size
d2=d1
d3=d1
d4=d1
n1=inner_seg
n3=arc_seg
n2=soil_depth_seg(n)
n4=out_seg
r1=1.1
r2=soil_depth_ratio
r3=1
r4=1.2
group_id='soil'+string(global_group_id)
commmand
gen zone radcylinder p0 p0x p0y p0z p1 p1x p1y p1z p2 p2x p2y p2z p3 p3x p3y p3z p4 p4x p4y p4z &
p5 p5x p5y p5z p6 p6x p6y p6z p7 p7x p7y p7z p8 p8x p8y p8z p9 p9x p9y p9z &
p10 p10x p10y p10z p11 p11x p11y p11z &
dimension d1 d2 d3 d4 size n1 n2 n3 n4 ratio r1 r2 r3 r4 group group_id;fill
endcommand
global_group_id=global_group_id+1
endloop
end
set soil_depth_ratio 1
set gravity 0 0 -9.8
set mech force 500
set log on
set soil_num 10
set boundary_size 8
set inner_seg 10
set out_seg 30
set arc_seg 10
set fine_grid_size 1.6
generate_the_field
为什么前面用fish定义了generate_the_field,但是运行结果提示 Cannot excute command…not a function,哪位大侠知道呀?