Limit equilibrium method#

© 2022 Exneyder A. Montoya-Araque, Daniel F. Ruiz and Universidad EAFIT.

This notebook can be interactively run in Google - Colab.

This notebook runs pyCSS by Suarez-Borgoa and Montoya-Araque [2016]; credits to @aarizat for the first PyPI package release (v0.1.0). Users can also access the original release asocciated with the publication, and the Spanish-version manual.

pyCSS#

Figure: Slope geometry variables

Required modules and initial setup#

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
import time
from shapely.geometry import Polygon, LineString
from ipywidgets import interact, widgets

from ipywidgets import widgets as wgt
from IPython import get_ipython
from IPython.display import display

if 'google.colab' in str(get_ipython()):
    print('Running on CoLab. Installing the required modules...')
    from subprocess import run
    # run('pip install ipympl', shell=True);
    run('pip install pycss-lem', shell=True);
    from google.colab import output
    output.enable_custom_widget_manager()

from pycss_lem import get_fos, get_min_fos

# %matplotlib widget
mpl.rcParams.update({
    "font.family": "serif",
    "font.serif": ["Computer Modern Roman", "cmr", "cmr10", "DejaVu Serif"],  # or 
    "mathtext.fontset": "cm",  # Use Computer Modern fonts for math
    "axes.formatter.use_mathtext": True,  # Use mathtext for axis labels
    "axes.unicode_minus": False,   # Use standard minus sign instead of a unicode character
})
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
Cell In[1], line 6
      4 import matplotlib as mpl
      5 import time
----> 6 from shapely.geometry import Polygon, LineString
      7 from ipywidgets import interact, widgets
      9 from ipywidgets import widgets as wgt

ModuleNotFoundError: No module named 'shapely'

Inputs for analyzing one circular failure surface#

Poject data#

projectName = "Slope stability class at EAFIT"
projectAuthor = "EAFIT"
projectDate = time.strftime("%d/%m/%y")  # Automatic date

Slope geometry#

slopeHeight = [5, 'm']
slopeDip = [1.5, 1.0]
crownDist = [10, 'm']
toeDist = [5, 'm']
wantAutomaticToeDepth = False
toeDepth = [5, 'm']

Watertable#

wantWatertable = True
wtDepthAtCrown = [4.0, 'm']
toeUnderWatertable = False

Materials properties#

waterUnitWeight = [9.8, 'kN/m3']
materialUnitWeight = [17, 'kN/m3']
frictionAngleGrad = [27, 'degrees']
cohesion = [5, 'kPa']

Advanced inputs#

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']
# Select the output format image 
outputFormatImg = '.svg'  # ['.eps', '.jpeg', '.jpg', '.pdf', '.pgf', '.png', '.ps', '.raw', '.rgba', '.svg', '.svgz', '.tif', '.tiff']

Assessment of a single potential circular failure surface#

Geomoetry of the circular failure surface#

hztDistPointAtCrownFromCrown = [-5, 'm']
hztDistPointAtToeFromCrown = [7.5, 'm']
slipRadius = [12, 'm']

Running stability analysis#

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
)
fig = plt.gcf()
# fig.set_size_inches(18.5, 10.5)
Analysis successfully performed!
../../_images/90fd401ca41ac3d010b01efba865d89ec8c8db30017a57c9e308d287da7ff8e4.png

Assessment of a multiple potential circular failure surface for getting the minimum \(f_\mathrm{s}\)#

Additional inputs to control how multiple surfaces are generated and evaluated#

numSlices = 15  # 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

Running stability analysis#

# %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,
)
fig = plt.gcf()
# fig.set_size_inches(18.5, 10.5)
../../_images/a464fc483a07296f1c6738a1670ecaecf3ae6daefa868846f6328f8d07906d7a.png