1 引言
在过去的文章中,曾经介绍过一个二维边坡稳定性分析模块pyslope【二维边坡稳定性分析模块pyslope;学习工具pyslope---二维边坡稳定性分析软件】, pyslope使用了Bishop方法进行边坡稳定性分析。本文为大家介绍另一个与之类似的二维边坡稳定性分析模块pyCSS (V0.1.0, 10/8/2022),这个模块提供了两种计算方法: Fellenius 和 Bishop。Fellenius方法求解的条件是力矩平衡,但力不平衡;简化的Bishop方法求解的条件是力矩平衡,力仅在x方向平衡,在y方向不平衡。应当指出的是在目前实践的边坡稳定性分析中,Ordinary/Fellenius 方法已经很少使用,4种流行的分析方法分别为: GLE/M-P, 简化的Janbu, 简化的Bishop和Spencer方法。
本文描述了pyCSS模块的安装方法和使用方法,计算结果的精度没有与标准的极限平衡法软件进行比较,有兴趣的同学可以检查其结果的可靠性。
2 安装pyCSS
为了方便起见,pyCSS安装在pyslope环境下面,由于这两个模块使用的库很简单,二者不会发生冲突。pyCSS使用的库包括numpy, matplotlib和scipy。使用下面的命令行安装。
pip install pycss-lem
计算结果函数有两个,一个是get_fos,计算指定滑动面的安全系数;另一个是get_min_fos,计算所有滑动面中的最小安全系数。
from pycss_lem import get_fos, get_min_fos
slopeHeight = [5, 'm']
slopeDip = [1.5, 1.0]
crownDist = [10, 'm']
toeDist = [5, 'm']
wantAutomaticToeDepth = False
toeDepth = [5, 'm']
wantWatertable = True
wtDepthAtCrown = [4.0, 'm']
toeUnderWatertable = False
waterUnitWeight = [9.8, 'kN/m3']
materialUnitWeight = [17, 'kN/m3']
frictionAngleGrad = [27, 'degrees']
cohesion = [5, 'kPa']
wantConstSliceWidthTrue = True
numSlices = 15 # Number of discretizations of slip surface
nDivs = numSlices # Number of discretizations of circular arcs
methodString = 'Allm' # Select the method to calcualte Fs ['Flns', 'Bshp' or 'Allm']
outputFormatImg = '.svg'
(5) 单一滑动面的安全系数
hztDistPointAtCrownFromCrown = [-5, 'm']
hztDistPointAtToeFromCrown = [7.5, 'm']
slipRadius = [12, 'm']
%matplotlib inline
msg = get_fos(
projectName,
projectAuthor,
projectDate,
slopeHeight,
slopeDip,
crownDist,
toeDist,
wantAutomaticToeDepth,
toeDepth,
hztDistPointAtCrownFromCrown,
hztDistPointAtToeFromCrown,
slipRadius,
wantWatertable,
wtDepthAtCrown,
toeUnderWatertable,
waterUnitWeight,
materialUnitWeight,
frictionAngleGrad,
cohesion,
wantConstSliceWidthTrue,
numSlices,
nDivs,
methodString,
outputFormatImg
)
(6) 最小滑动面的安全系数
numSlices = 8 # Number of discretizations of slip surface
numCircles = 500 # Number of surfaces to assess
radiusIncrement = [3, 'm'] # Length of radius increment
numberIncrements = 5 # Number of radius increment
maxFsValueCont = 3 # Mask to plot fs at screen
%matplotlib inline
get_min_fos(
projectName,
projectAuthor,
projectDate,
slopeHeight,
slopeDip,
crownDist,
toeDist,
wantAutomaticToeDepth,
toeDepth,
numCircles,
radiusIncrement,
numberIncrements,
maxFsValueCont,
wantWatertable,
wtDepthAtCrown,
toeUnderWatertable,
waterUnitWeight,
materialUnitWeight,
frictionAngleGrad,
cohesion,
wantConstSliceWidthTrue,
numSlices,
nDivs,
methodString,
outputFormatImg,
)