- 积分
- 0
- 注册时间
- 2007-6-2
- 仿真币
-
- 最后登录
- 1970-1-1
|
前几天看到海棠大哥这篇《利用Sufer和FISH进行复杂地形建模》这篇文章,感觉相当棒!!现在利用该方法建模,分为三层,在原有的数据基础上,第一层+2m成为第一层(soil)。有些地方尚存疑虑,请各位帮满看看!建立的三层地形中,第一层(soil)不见了,第三层部分消失,很是奇怪,将原有第三段命令流进行部分修改,前两段程序未修改。不知问题出在哪里请给位指点,为了方便我将源程序法如压缩包,请给位看看,我认为是group定义错误!多谢大家!还有就是该方法对数据的数量(要求整数),个大小都有要求吧,差距太大的数好像不行啊!请大家多多指点! ; Fish function to generate a model surface
; from a topographic map
; FISH variables:
;
dx_size
:
element size in x-direction
;
dy_size
:
element size in y-direction
;
n_zon_col
:
number of elements in x-direction
;
n_zon_row
:
number of elements in y-direction
;
z_base
:
elevation (in z-direction) of base of brick primitive
;
z_size
:
number of elements in z-direction
;
xor
:
minimum x-coordinate
;
yor
:
minimum y-coordinate
; Enter the command TOPO to invoke this function
;
def WriteFlac3D
status = open(FlacFile, IO_WRITE, IO_ASCII)
array Layer1(1)
array Layer2(1)
array Layer3(1)
;第一块
loop i (1,n_zon_col)
loop j(1,n_zon_row)
x1=xor+dx_size*(i-1)
x2=x1+dx_size
y1=yor+dy_size*(j-1)
y2=y1+dy_size
zg1=table(j,x1)
zg2=table(j+1,x1)
zg3=table(j+1,x2)
zg4=table(j,x2)
zr1=table(j+n_zon_row,x1)
zr2=table(j+n_zon_row+1,x1)
zr3=table(j+n_zon_row+1,x2)
zr4=table(j+n_zon_row,x2)
;command
;
;-------------------------------------------------------------
;
gen zon wedge p0 x1 y1 zr1 p1 x1 y2 zr2 p2 x1 y1 zg1 p3 x2 y1 zr4 &
;
p4 x1 y2 zg2 p5 x2 y1 zg4 size ydiv zdiv xdiv
;
gen zon wedge p0 x2 y1 zr4 p1 x1 y2 zr2 p2 x2 y1 zg4 p3 x2 y2 zr3 &
;
p4 x1 y2 zg2 p5 x2 y2 zg3 size ydiv zdiv xdiv
;
;-------------------------------------------------------------
;end_command
Layer1(1) = 'gen zon wedge p0 '+ string(x1) + ' ' + string(y1) + ' ' + string(zr1)
Layer1(1) = Layer1(1) + ' p1 '+ string(x1) + ' ' + string(y2) + ' ' + string(zr2)
Layer1(1) = Layer1(1) + ' p2 '+ string(x1) + ' ' + string(y1) + ' ' + string(zg1)
Layer1(1) = Layer1(1) + ' p3 '+ string(x2) + ' ' + string(y1) + ' ' + string(zr4) + ' & '+ '\n'
Layer1(1) = Layer1(1) + ' p4 '+ string(x1) + ' ' + string(y2) + ' ' + string(zg2)
Layer1(1) = Layer1(1) + ' p5 '+ string(x2) + ' ' + string(y1) + ' ' + string(zg4)
Layer1(1) = Layer1(1) + ' size '+ string(ydiv) + ' ' + string(zdiv) + ' ' + string(xdiv) + ' \n'
Layer1(1) = Layer1(1) + 'gen zon wedge p0 '+ string(x2) + ' ' + string(y1) + ' ' + string(zr4)
Layer1(1) = Layer1(1) + ' p1 '+ string(x1) + ' ' + string(y2) + ' ' + string(zr2)
Layer1(1) = Layer1(1) + ' p2 '+ string(x2) + ' ' + string(y1) + ' ' + string(zg4)
Layer1(1) = Layer1(1) + ' p3 '+ string(x2) + ' ' + string(y2) + ' ' + string(zr3) + ' & '+ '\n'
Layer1(1) = Layer1(1) + ' p4 '+ string(x1) + ' ' + string(y2) + ' ' + string(zg2)
Layer1(1) = Layer1(1) + ' p5 '+ string(x2) + ' ' + string(y2) + ' ' + string(zg3)
Layer1(1) = Layer1(1) + ' size '+ string(ydiv) + ' ' + string(zdiv) + ' ' + string(xdiv)
if i = n_zon_col then
if j = n_zon_row then
Layer1(1) = Layer1(1) + '\n '
Layer1(1) = Layer1(1) + 'group soil'
endif
endif
status = write(Layer1,1)
end_loop
end_loop
;第二块
loop i (1,n_zon_col)
loop j(1,n_zon_row)
x1=xor+dx_size*(i-1)
x2=x1+dx_size
y1=yor+dy_size*(j-1)
y2=y1+dy_size
zg1=table(j,x1)
zg2=table(j+1,x1)
zg3=table(j+1,x2)
zg4=table(j,x2)
zr1=table(j+n_zon_row,x1)
zr2=table(j+n_zon_row+1,x1)
zr3=table(j+n_zon_row+1,x2)
zr4=table(j+n_zon_row,x2)
zb=z_base
Layer2(1) = 'gen zon wedge p0 '+ string(x1) + ' ' + string(y1) + ' ' + string(zb)
Layer2(1) = Layer2(1) + ' p1 '+ string(x1) + ' ' + string(y2) + ' ' + string(zb)
Layer2(1) = Layer2(1) + ' p2 '+ string(x1) + ' ' + string(y1) + ' ' + string(zr1)
Layer2(1) = Layer2(1) + ' p3 '+ string(x2) + ' ' + string(y1) + ' ' + string(zb) + ' & '+ '\n'
Layer2(1) = Layer2(1) + ' p4 '+ string(x1) + ' ' + string(y2) + ' ' + string(zr2)
Layer2(1) = Layer2(1) + ' p5 '+ string(x2) + ' ' + string(y1) + ' ' + string(zr4)
Layer2(1) = Layer2(1) + ' size '+ string(ydiv) + ' ' + string(zdiv) + ' ' + string(xdiv) + ' \n'
Layer2(1) = Layer2(1) + 'gen zon wedge p0 '+ string(x2) + ' ' + string(y1) + ' ' + string(zb)
Layer2(1) = Layer2(1) + ' p1 '+ string(x1) + ' ' + string(y2) + ' ' + string(zb)
Layer2(1) = Layer2(1) + ' p2 '+ string(x2) + ' ' + string(y1) + ' ' + string(zr4)
Layer2(1) = Layer2(1) + ' p3 '+ string(x2) + ' ' + string(y2) + ' ' + string(zb) + ' & '+ '\n'
Layer2(1) = Layer2(1) + ' p4 '+ string(x1) + ' ' + string(y2) + ' ' + string(zr2)
Layer2(1) = Layer2(1) + ' p5 '+ string(x2) + ' ' + string(y2) + ' ' + string(zr3)
Layer2(1) = Layer2(1) + ' size '+ string(ydiv) + ' ' + string(zdiv) + ' ' + string(xdiv)
if i = n_zon_col then
if j = n_zon_row then
Layer2(1) = Layer2(1) + '\n '
Layer2(1) = Layer2(1) + 'group rock range group soil not' + '\n '
endif
endif
status = write(Layer2,1)
end_loop
end_loop
;第三块
loop i (1,n_zon_col)
loop j(1,n_zon_row)
x1=xor+dx_size*(i-1)
x2=x1+dx_size
y1=yor+dy_size*(j-1)
y2=y1+dy_size
zg1=table(j,x1)
zg2=table(j+1,x1)
zg3=table(j+1,x2)
zg4=table(j,x2)
zr1=table(j+n_zon_row,x1)
zr2=table(j+n_zon_row+1,x1)
zr3=table(j+n_zon_row+1,x2)
zr4=table(j+n_zon_row,x2)
zb=z_base
Layer3(1) = 'gen zon wedge p0 '+ string(x1) + ' ' + string(y1) + ' ' + string(zb)
Layer3(1) = Layer3(1) + ' p1 '+ string(x1) + ' ' + string(y2) + ' ' + string(zb)
Layer3(1) = Layer3(1) + ' p2 '+ string(x1) + ' ' + string(y1) + ' ' + string(zr1)
Layer3(1) = Layer3(1) + ' p3 '+ string(x2) + ' ' + string(y1) + ' ' + string(zb) + ' & '+ '\n'
Layer3(1) = Layer3(1) + ' p4 '+ string(x1) + ' ' + string(y2) + ' ' + string(zr2)
Layer3(1) = Layer3(1) + ' p5 '+ string(x2) + ' ' + string(y1) + ' ' + string(zr4)
Layer3(1) = Layer3(1) + ' size '+ string(ydiv) + ' ' + string(zdiv) + ' ' + string(xdiv) + ' \n'
Layer3(1) = Layer3(1) + 'gen zon wedge p0 '+ string(x2) + ' ' + string(y1) + ' ' + string(zb)
Layer3(1) = Layer3(1) + ' p1 '+ string(x1) + ' ' + string(y2) + ' ' + string(zb)
Layer3(1) = Layer3(1) + ' p2 '+ string(x2) + ' ' + string(y1) + ' ' + string(zr4)
Layer3(1) = Layer3(1) + ' p3 '+ string(x2) + ' ' + string(y2) + ' ' + string(zb) + ' & '+ '\n'
Layer3(1) = Layer3(1) + ' p4 '+ string(x1) + ' ' + string(y2) + ' ' + string(zr2)
Layer3(1) = Layer3(1) + ' p5 '+ string(x2) + ' ' + string(y2) + ' ' + string(zr3)
Layer3(1) = Layer3(1) + ' size '+ string(ydiv) + ' ' + string(zdiv) + ' ' + string(xdiv)
if i = n_zon_col then
if j = n_zon_row then
Layer3(1) = Layer3(1) + '\n '
Layer3(1) = Layer3(1) + 'group base range group soil not group rock not' + '\n '
Layer3(1) = Layer3(1) + 'pl s b w' + '\n '
Layer3(1) = Layer3(1) + 'pl bl gr'
endif
endif
status = write(Layer3,1)
end_loop
end_loop
status = close
end
WriteFlac3D
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
×
|