求解边坡的安全系数可用强度折减法,一般有2种实现过程:1)直接折减强度然后在自重下求解;2)先求解自重应力,然后折减强度再求解。两种过程结果一样,但2)的特点是都要经过一次自重应力的求解,如果折减的次数很多,那么自重应力的求解耗费的时间很多,于是可以进行一次自重应力求解,然后写入一个文件保存下来,在折减强度前读入自重应力结果再计算即可,废话不多,写入应力和读入应力的fish代码如下:
--------------------------------- wrGraStr.txt文件 -----------------------------------------
;单元自重应力写入文件graStress.dat
def graStressInfo
array buf(6)
pnt=zone_head
loop while pnt # null
;应力顺序sxx,syy,szz,sxy,sxz,syz
buf(1)=string(z_sxx(pnt))
buf(2)=string(z_syy(pnt))
buf(3)=string(z_szz(pnt))
buf(4)=string(z_sxy(pnt))
buf(5)=string(z_sxz(pnt))
buf(6)=string(z_syz(pnt))
status = write(buf,6)
pnt=z_next(pnt)
end_loop
end
def wrGraStress
status = close
status = open('graStress.dat',1,1)
if status = 0 then
graStressInfo
status = close
end_if
end
--------------------------------- reGraStr.txt文件 -----------------------------------------
;读入文件graStress.dat中的单元自重应力
def defArray
array buf(6)
array flbuf(6)
end
defArray
def graStressInfo
pnt=zone_head
loop while pnt # null
;应力顺序sxx,syy,szz,sxy,sxz,syz
status = read(buf,6)
z_sxx(pnt)=float(buf(1))
z_syy(pnt)=float(buf(2))
z_szz(pnt)=float(buf(3))
z_sxy(pnt)=float(buf(4))
z_sxz(pnt)=float(buf(5))
z_syz(pnt)=float(buf(6))
pnt=z_next(pnt)
end_loop
end
def reGraStress
status = close
status = open('graStress.dat',0,1)
if status = 0 then
graStressInfo
status = close
end_if
end
( PS: 由于本人土币不多,好心人士下载附件给我点土币哈,附件代码跟贴子上一样的 )