1 引言
本文是对【学习工具pyslope---二维边坡稳定性分析软件】(5/10/2022)的更新,与HYRCAN【HYRCAN使用Python进行边坡稳定性的参数化分析】和Itasca软件【Python in Itasca software---UCS的参数化研究】不同的是,pyslope(V1.1.9)是一个完全用Python编写的二维边坡稳定性分析模块(A 2D Slope Stability Software using Bishop's method)。目前pyslope可以实现如下功能:
(1) 无限的水平地层(unlimited horizontal geological units);
(2) 地下水位(water table);
(3) 均布载荷(uniform loads);
(4) 线性载荷(line loads);
(5) 边坡搜索范围(slope search limits)
该模块(from pyslope import *)可以画出边坡临界破坏面或低于某一安全系数的所有破坏面。
2 计算步骤
一个典型的pyslope计算步骤如下:
(1) 产生Slope对象
边坡实例的创建输入边坡高度(m)、边坡角(°)和边坡长度(m),长度和角度只使用其中一个值,另一个值应该被设置为None。[s.plot_boundary()]
s = Slope(height=3, angle=30, length=None)
(2) 产生Material对象并且赋值到Slope
创建一个Material对象输入的参数包括: 单位重量(kN/m^3)、内摩擦角、粘结力(kPa)以及坡顶到材料层底部的深度(m)。一旦定义了材料属性,就可以将其分配给Slope实例。边坡会根据坡顶到地层底部的深度来排列材料,材料的顺序可以任意输入,但同一深度不能设置为两种不同的材料,否则会出现错误。[s.plot_boundary()]
m1 = Material(
unit_weight=20,
friction_angle=45,
cohesion=2,
depth_to_bottom=2
)
m2 = Material(20, 30, 2, 5)
s.set_materials(m1, m2)
(3) 创建均布载荷Udl或线性载荷LineLoad对象,并且赋值到Slope
创建一个Udl(uniform distributed load)对象需要输入载荷的大小(kPa)、载荷距坡肩的距离(m)(默认为0m)以及载荷的长度(m)(默认为无限长)。[s.plot_boundary()]
u1 = Udl(magnitude = 100, offset = 2, length = 1)
u2 = Udl(magnitude = 20)
s.set_udls(u1, u2)
创建LineLoad对象时需要输入载荷的大小(kN/m)和载荷距坡肩的距离(m)(默认为0m)。
p1 = LineLoad(magnitude = 10, offset = 3)
s.set_lls(p1)
(4) 设置水位
默认情况下没有水位。水位是从坡顶测量的深度(m)。
s.set_water_table(4)
(5) 设置分析限制
分析限制(slope search limits)用来控制滑动面顶部和底部可能发生的范围,这是使用LEM分析边坡稳定性的一种优化策略,相似的讨论参考:
相关文章,在仿真秀官网搜索:
边坡稳定性多模态优化(Multi-Modal Optimization)
土钉支护的边坡稳定性(Stability of Slope Reinforced with Soil Nails)
使用get_top_coordinates和get_bottom_coordinates方法定义边坡滑动面搜索范围。
s.set_analysis_limits(s._top_coord[0]-5, s._bot_coord[0]+5)
(6) 计算临界安全系数
使用analyse_slope()方法计算临界安全系数。默认值为每个滑动面划分为50个垂直条,最大迭代次数为2000。如果需要更改使用update_analysis_options方法。
s.update_analysis_options(
slices=50,
iterations=2500,
tolerance=0.005,
max_iterations=50
)
s.analyse_slope()
(7) 结果解释
通过上述计算可以得出边坡的最小安全系数,同时可以画出临界滑动面等。
print(s.get_min_FOS())
s.plot_boundary()
s.plot_critical()
s.plot_all_planes(max_fos=2)
3 动态分析
这里的动态分析不是通常所指的动力分析,而是指载荷位置的变化,目的是寻求在哪个位置时达到给定的临界安全系数,这相当于是一个参数化研究或敏感性分析。
s.remove_udls(u1)
s.set_udls(
Udl(magnitude=100, length=1,
offset=2, dynamic_offset=True,
color='purple')
)
s.analyse_dynamic(critical_fos=1.4)
s.get_dynamic_results()
s.print_dynamic_results()
结果如下:
Offset: 0.000 m, FOS: 1.027
Offset: 2.765 m, FOS: 1.406
Offset: 3.045 m, FOS: 1.438
Offset: 5.186 m, FOS: 1.662