1 引言
Python语言运用在数值模拟中的一个非常重要的功能是进行参数化分析,本质上是利用Python语言的循环函数自动化多个计算。HYRCAN是一个免费的LEM边坡稳定性分析软件【HYRCAN---一个免费的边坡稳定性分析框架(极限平衡法LEM)】,它能够使用JS语言进行自动化分析【HYRCAN脚本描述以及与SLIDE计算结果比较】。在最新的V2.0版本中,HYRCAN增加了使用Python调用JS命令的功能。下面简要描述如何在HYRCAN中使用Python进行参数化分析。
2 hyrcan模块
HYRCAN模仿了Itasca软件中itasca模块的编程方法,因此在Itasca软件中发展的编程技巧完全可以用于HYRCAN。
import hyrcan as hy
newmodel()
set('failureDir','r2l')
extboundary(0,0,130,0,130,50,80,50,50,30,0,30,0,0)
matboundary(0,20,130,35)
matboundary(56,34,130,42)
definemat('ground','matID',1,'matName','Sand','uw',18,'cohesion',5,'friction',38)
definemat('ground','matID',2,'matName','Clay','uw',17,'cohesion',57,'friction',0)
assignsoilmat('matid',2,'atpoint',85,30)
definelimits('limit',20,65,'limit2',80,100)
set('Method','BishopSim','on')
""")
hyrcan模块有如下函数:
(1) hy.command---执行JS命令
(2) hy.min_fos---取出安全系数。分析方法可以是 "Bishop Simplified", "Janbu Simplified", "Spencer", "GLE/Morgenstern-Price" ;或者使用短语 "BishopSim", "JanbuSim", "Spencer", "GLE/M-P"
(3) hy.surf_id_list---基于设定的类型返回全部或有效的滑动面
(4) hy.surf_fos---返回特定滑动面id和计算方法的安全系数
(5) hy.surf_center---返回特定滑动面id的圆中心
(6) hy.surf_radius---返回特定滑动面id的半径
3 参数化分析
下面对粘土层的粘结力进行参数化分析,变化范围使用数组coh_array = [60,70,80,90]定义,对每个粘结力值循环进行安全系数计算。下面所示的代码并不是最佳的写法,可以使用Python强大的循环函数写出更职业化的代码。
fos_array = [-1,-1,-1,-1]
coh_array = [60,70,80,90]
cmd = "definemat('ground','matID',2,'matName','Clay','uw',17,'cohesion',{coh},'friction'
,0)"
for i in range(0, 4):
hy.command(cmd.format(coh=coh_array[i]))
hy.command("compute('silence')")
fos_array[i] = hy.min_fos('BishopSim')
使用XlsxWriter模块把数组coh_array和fos_array的计算结果写入Excel文件,然后进行作图。
worksheet.write_column('A2', coh_array)
worksheet.write_column('B2', fos_array)