找回密码
 注册
Simdroid-非首页
查看: 380|回复: 10

[命令/FISH] 利用Sufer和FISH进行复杂地形建模询问?

[复制链接]
发表于 2008-4-22 19:40:38 | 显示全部楼层 |阅读模式 来自 陕西西安
前几天看到海棠大哥这篇《利用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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 发表于 2008-4-28 17:06:25 | 显示全部楼层 来自 陕西西安
Simdroid开发平台
还望大家赐教!
回复 1 不支持 0

使用道具 举报

 楼主| 发表于 2008-4-23 09:51:11 | 显示全部楼层 来自 陕西西安
而且对数据的数量有相当的限制,可是用surfer导入dat文件中,会有大量的数据不一定是能被2除,这样在定义xy方向的单元式就出现不对应等问题,请问如何处理。如果高程值很大的话,导入flac会出现问题,单元连接不上,请问这该如何处理!在下急啊!
回复 不支持

使用道具 举报

 楼主| 发表于 2008-4-24 12:22:16 | 显示全部楼层 来自 陕西西安
各位高手帮帮忙吧!我正在困惑中!
回复 不支持

使用道具 举报

 楼主| 发表于 2008-4-28 09:09:21 | 显示全部楼层 来自 陕西西安
不要沉底啊!请多多帮忙了!
回复 不支持

使用道具 举报

发表于 2008-4-28 20:19:20 | 显示全部楼层 来自 四川宜宾
顶一个。改变层数好像是三个fish文件都要设置,具体还要请教高手
回复 不支持

使用道具 举报

 楼主| 发表于 2008-5-5 16:22:28 | 显示全部楼层 来自 陕西西安
依然期待!
回复 不支持

使用道具 举报

 楼主| 发表于 2008-5-11 17:07:28 | 显示全部楼层 来自 陕西西安
o !原来这样啊!明白了!但还要继续试试!
回复 不支持

使用道具 举报

发表于 2011-3-17 19:32:07 | 显示全部楼层 来自 华南理工大学
我也在尝试呢。。。
回复 不支持

使用道具 举报

发表于 2011-3-17 22:29:29 | 显示全部楼层 来自 贵州贵阳
geotechnical
回复 不支持

使用道具 举报

发表于 2012-4-5 16:52:07 | 显示全部楼层 来自 湖北武汉
楼主的问题解决了没有啊,我也遇到同样的问题
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-9-24 18:26 , Processed in 0.039117 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表