首页/文章/ 详情

LEM边坡稳定性软件HYRCAN V2.0.7 [新的Python函数]

1年前浏览1576

1 引言

免费的二维边坡稳定性分析软件HYRCAN V2.0.7发布了(09/28/2022)。HYRCAN是Mikola博士在2020年疫情大流行期间开发的一个类似于Slide2的边坡稳定性分析软件。Mikola博士2012年毕业于加州大学伯克利分校(University of California at Berkeley),毕业后在Jacobs Engineering---一个国际知名的土木工程咨询公司工作,2018年加入WSP USA工作(WSP 于2020年收购了国际知名的岩土和环境工程咨询公司Golder Associates)。Dr. Mikola在工作之余,开发了许多小型的岩土工程工具软件,例如DXF到UDEC的转换、有限元分析、工程岩体分类、岩石楔形破坏分析、巷道支护等。


HYRCAN是一个二维边坡稳定性程序,用于评估土或岩石边坡圆形破坏面的安全系数,可以快速创建和分析复杂的模型,能够模拟外部荷载、地下水和支护。按照Dr. Mikola的说法,HYRCAN(包括有限元软件ADONIS)的最终目标是向岩土工程师和大学教师提供类似于商业软件包(FLAC, SLIDE, PLAXIS等)的服务,使用现代软件设计原理的免费框架为计算岩土力学提供一个新的和有用的工具,而且为该领域的计算软件设立一个新的标准。

2 JS命令流
集成非编译型的页描述语言是现代工业软件设计的一个趋势,HYRCAN使用的第一种页描述语言是JavaScriptHYRCAN脚本描述以及与SLIDE计算结果比较













newmodel()set("failureDir","r2l")extboundary(20,25,30,25,50,35,70,35,70,20,20,20,20,25)matboundary(30,25,50,29,54,31,70,31)matboundary(40,27,52,24,70,24)definemat("ground","matID",1,"matName","Soil 1","uw",19.5,"cohesion",0,"friction",38)definemat("ground","matID",2,"matName","Soil 2","uw",19.5,"cohesion",5.3,"friction",23)definemat("ground","matID",3,"matName","Soil 3","uw",19.5,"cohesion",7.2,"friction",20)assignsoilmat("matid",1,"atpoint",53.5982,32.8461)assignsoilmat("matid",2,"atpoint",56.9309,28.517)assignsoilmat("matid",3,"atpoint",34.2547,22.0234)definelimits("limit",20,36.665,"limit2",45,70)compute()

这段代码用来计算下图所示的边坡稳定性。可以用JavaScript或Python语言写子程序来扩展程序现有的功能。

(1) 项目设置
在项目设置中,主要设置单位和重力加速度。所有的数值模拟软件自身都不提供单位换算功能,输入数据的单位由用户定义,但必须符合单位一致性的规则,否则计算结果出错。





newmodel()set("language","en")set("unit","metric","waterUW",9.81)set("failureDir","l2r","numSlice",50)set("Method","GLE/M-P","on","Method","JanbuSim","on","Method","Spencer","on")
(2) 边界定义
边界由外部边界和材料边界组成:


  
extboundary(20,25,30,25,50,35,70,35,70,20,20,20,20,25)matboundary(30,25,50,29,54,31,70,31)  
(3) 材料定义
材料模型包括: (1) Mohr-Coulomb (2) Hoek-Brown (3) SHANSEP

  
definemat("ground","matID",1,"matName","soil 1","uw",19.5,"cohesion",0,"friction",38)  
(4) 赋值材料

  
assignsoilmat("matid",1,"atpoint",44.1517,29.8778)  
(5) 边坡限制

  
definelimits("limit",20,36.665,"limit2",45,70)  
(6) 水位定义

  
addwatertable(0,10,30,3,40,3)  
(7) 载荷定义


applyload("constant","loadid",1,"mag",50,"orientation","normal","frompoint",8,16,"topoint",14,16)applyload("seismic","horizCoeff",0.15)
(8) 支护定义


  
definemat("support","matID",1,"supportType","SoilNail","matName","soil_nail","spacing",1.5,"tensCapacity",118,"plateCapacity",86,"bondStrength",15)addsupport("pattern","id",1,"matid",1,"orientation","anglefromhoriz","angle",-15,"length",4.9,"spaced","along","dist",1.5,"frompoint",0,1.5,"topoint",0,5)  
(9) 计算过程


  
compute("silence")getminfos("JanbuSim")  
(10) 结果显示

show("slices")hide("allsurfaces")savemodel()


3 Python模块

Python语言在数值模拟中的一个重要用途是进行参数化分析,本质上利用了Python语言的循环函数自动化多个计算。在最新的V2.0版本中,HYRCAN增加了使用Python调用JS命令的功能。HYRCAN模仿了Itasca软件中itasca模块的编程方法,因此在Itasca软件中发展的编程技巧完全可以用于HYRCAN。











import hyrcan as hynewmodel()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模块共有8个函数:
(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的半径

(7) hy.surf_center_min_fos---返回最小滑动面的中心

(8) hy.surf_radius_min_fos---返回最小滑动面的半径

其中(7)和(8)是V2.0.7新增加的函数。


HYRCAN目前使用的Python版本是3.9.13。曾经想把plxle【二维和三维边坡稳定性分析模块plxle】安装在HYRCAN的环境中,使用一个输入参数同时运行两个软件,结果在安装后不能正确输入模块plxle,在初始化时出现错误信息[cannot import name 'cygrpc' from 'grpc._cython'];另一个问题是HYRCAN与Python的集成使用了与Itasca软件相同的内嵌方法,也就是Python代码只能在它的软件环境中运行,不能使用象Plaxis那种远程编程方式【Plaxis使用Spyder替换默认编辑器SciTE的方法】;此外,外部参数如何传递到hy.command()命令也没尝试到合适的方法,Itasca软件通过FISH可以实现,但HYRCAN似乎没有直接的方法。


4 参数化分析
下面对粘土层的粘结力进行参数化分析,变化范围使用数组coh_array = [60,70,80,90]定义,对每个粘结力值循环进行安全系数计算。








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)


来源:计算岩土力学
岩土材料PLAXIS
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2022-12-03
最近编辑:1年前
计算岩土力学
传播岩土工程教育理念、工程分析...
获赞 147粉丝 1055文章 1776课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈