11. Stability of seismically loaded slope

In this example we consider the stability of slope with pseudo-static seismic loading. The analytical solutions are shown in [Loukidis et al. (2003)][1].

Figure 11.1 Slope geometry.
Figure 11.1 Slope geometry.

[1]: Loukidis, D., Bandini, P. and Salgado, R. (2003). Stability of seismically loaded slopes using limit analysis. Géotechnique, 53 (5), 463–479.

Code

"""Initialization"""
from OptumGX import *
import numpy as np
# Application
gx = GX()
# Project
project_name = "Example 11 Loukidis_seismic"
prj = gx.create_project(project_name)
prj.get_current_model().delete()
# Model (2D)
model2d = prj.create_model('2D model',model_type='plane_strain')
# Stage
stage1 = model2d.create_stage('stage 1')

"""Constants"""
a = 20
b = 50


"""Geometry"""
#Model outline
model2d.add_polygon(points=[[0, 0], [b, 0], [b, -25-a], [-99, -25-a], [-99, -25], [-75, -25]])

"""Materials"""
#Soil domain
MC = prj.MohrCoulomb(
    name='MC',
    color = rgb(79,180,63),
    c = 25,
    phi= 30,
    gamma_dry=20,
    gamma_sat=20,
    )
#Selecting soil domain and setting material
SoilFace = model2d.select(p0=[0,-1],types='face')
model2d.set_solid(shapes=SoilFace,material=MC)

"""Loads"""
#Surcharge
model2d.set_body_load(
    shapes=SoilFace,
    value= -1,
    direction= 'x',
    option='multiplier')

"""Supports"""
#Set standard supports
model2d.set_standard_fixities()

"""Analysis"""
#Define analysis parameters
stage1.set_analysis_properties(
                analysis_type='load_multiplier',
                element_type='mixed',
                no_of_elements=1000,
                mesh_adaptivity= 'yes',
                adaptivity_iterations=3,
                start_elements= 1000,
                time_scope='long_term'
                )
#Begin analysis
prj.run_analysis()

"""Output"""
res = [stage1.output.global_results.load_multiplier]
print("k_c =", round(res[0]/MC.gamma_dry,ndigits=3))
#Zoom and center model
model2d.zoom_all()

if False: #if True: Save GX file to current working directory
       current_path = os.getcwd()
       filename =project_name+".gxx"
       gx.save_project(file_path=os.path.join(current_path, filename))