看看这个关于water.fis的命令注释吧,希望对你有所帮助哦!
关于water.fis的命令注释(设置地下水位)
1)water.fis的 功能是设置地下水位面,在二维计算中,通过water table命令即可设置水位线,在三维计算 中由于地下水位是面,因此需要作一些插值运算,以便形成水位面。这个FISH程序包含三个函数parm,aux1和aux2。parm用来设定水位的边值,即设置水位的区域,aux1插 值计算等值线的点,aux2调用aux1的 计算结果,使用FLAC3D命令形成水位面。
2)首先设置参数值,然后定义一个table.
def parm
nptab1=7
nprof=10
end
parm
table 1 (12 0) (18.25 12.5) (25 17) (35 21) (50 24) (75 25) (150 25)
产 生table1,包含7组数据点。
3) 在解释的两个FISH函数之前,对table,xtable,ytable作 一些总的说明。water.fis程序反复使用了这三个变量,理解了这三个变量的含义,water.fis这段程序就解决了大半问题了。
Itasca的所有软件都使用了相同的数据结 构储存数据,称之为链表结构,类似于关系型数据库中的数据链接方法。如果有数据结构的知识,或掌握关系型数据库的SQL语 言,这三个变量的含义就不难理解了,只不过这个操作与真正的数据库操作相比,只有两个数据变量x,y。 我用数据库的术语作解释:table就是产生一个“表”,xtable,ytable的作用就是产生一个新 表(Create)以及对表中的数据进行取出(Select)、 插入(Insert)、替换(Update)操 作.
4)FISH函数aux1的 作用是在table 1的基础上产生出另外个table,table的ID从11到17,每个table有10个数据集。alfa的计算方法是为适合(fit)曲面而采用的坐标点算法。
def aux1
loop n(1,nptab1)
rr=xtable(1,n)
zz=ytable(1,n)
loop k(1,nprof)
case_of k
alfa=0.5*(pi+.1)*float(k-2)/float(nprof-2)
xtable(n+10,k)=rr*cos(alfa)
ytable(n+10,k)=rr*sin(alfa)
case 1
xtable(n+10,k)=rr
ytable(n+10,k)=-40.0
case 2
xtable(n+10,k)=rr
ytable(n+10,k)=0.0
end_case
end_loop
end_loop
end
aux1
当执行这个FISH函数后,生成(nptab1+10,nprof)组数据,这些数据为Aux2调 用。注意:本段程序产生的数据是为那个特定的曲面边坡制作的,不是一个general purpose的LIB
5)FISH函数aux2的作用是 使用WATER TABLE face命令产生水
面,把table 1的ytable值作为z坐标,aux1产生的数据作为x,y坐标。
def aux2
command
set grav 0 0 -10
water dens 1000
end_command
loop n(1,nptab1-1)
loop k (1,nprof-1)
xx1=xtable(n+10,k)
yy1=ytable(n+10,k)
zz1=ytable(1,n)
xx2=xtable(n+10,k+1)
yy2=ytable(n+10,k+1)
zz2=zz1
xx3=xtable(n+11,k+1)
yy3=ytable(n+11,k+1)
zz3=ytable(1,n+1)
xx4=xtable(n+11,k)
yy4=ytable(n+11,k)
zz4=zz3
command
WATER TABLE face xx1,yy1,zz1 xx2,yy2,zz2 xx3,yy3,zz3
WATER TABLE face xx1,yy1,zz1 xx3,yy3,zz3 xx4,yy4,zz4
end_command
end_loop
end_loop
end
aux2