Geotechnic utils

Soil with friction and cohesion

Frictional soil

frictional_soil.py: frictional (or cohesionless) soil model.

class geotechnics.frictional_soil.FrictionalSoil(phi: float, rho=2100.0, rhoSat=None, phi_cv=None, gammaMPhi=1.0, E=100000000.0, nu=0.3)

Bases: object

Free-running type of soil, such as sand or gravel, whose strength depends on friction between particles.

Variables
  • phi – internal friction angle of the soil.

  • rho – soil density (mass per unit volume).

  • E – Young’s modulus.

  • nu – Poisson’s ratio.

K0Jaky()

Returns Jaky’s coefficient (earth pressure at rest).

Ka()

Active earth pressure coefficient.

Ka_coulomb(a, b, d=0.0, designValue=False)

Return the active earth pressure coefficient according to Coulomb’s theory (see Recomendaciones para obras marítimas ROM 0.5-05 figure 3.7.12.).

Parameters
  • a – angle of the back of the retaining wall (radians, 0 if vertical).

  • b – slope of the backfill (radians, 0 if horizontal).

  • d – friction angle between soil and the back of retaining wall (radians).

  • designValue – if true use the design value of the internal friction.

Kah_coulomb(a, b, d, designValue=False)

Return the horizontal component of the active earth pressure coefficient according to Coulomb’s theory.

Parameters
  • a – angle of the back of the retaining wall (radians).

  • b – slope of the backfill (radians).

  • d – friction angle between soil an back of retaining wall (radians).

  • designValue – if true use the design value of the internal friction.

Kav_coulomb(a, b, d, designValue=False)

Return the vertical component of the active earth pressure coefficient according to Coulomb’s theory.

Parameters
  • a – angle of the back of the retaining wall (radians).

  • b – slope of the backfill (radians).

  • phi – internal friction angle of the soil (radians).

  • d – friction angle between the soil an the back surface of the retaining wall (radians).

  • designValue – if true use the design value of the internal friction.

Kp()

Passive earth pressure coefficient.

Kp_coulomb(a, b, d=0.0, designValue=False)

Return the passive earth pressure coefficient according to Coulomb’s theory.

Parameters
  • a – angle of the back of the retaining wall (radians).

  • b – slope of the backfill (radians).

  • d – friction angle between the soil and the back surface of the retaining wall (radians).

  • designValue – if true use the design value of the internal friction.

eq_coulomb(a, b, d, p, designValue=False)

eq_coulomb(a,b,d,p): Return the lateral earth pressure caused by a uniform load q action over the backfill surface according to Coulomb’s theory.

Parameters
  • a – angle of the back of the retaining wall (radians).

  • b – slope of the backfill (radians).

  • d – friction angle between soil an back of retaining wall (radians).

  • p – Uniform load.

  • designValue – if true use the design value of the internal friction.

gamma()

Unit weight of soil

getBulkModulus()

Return the bulk modulus of the soil. See https://en.wikipedia.org/wiki/Bulk_modulus

getDesignC()

Return the design value of the soil cohesion.

getDesignPhi()

Return the design value of the soil internal friction angle.

getMononobeOkabeDryOverpressure(H, kv, kh, psi=1.5707963267948966, delta_ad=0.0, beta=0.0, Kas=None, g=9.81)

Overpressure due to seismic action according to Mononobe-Okabe

Parameters
  • H – height of the structure.

  • kv – seismic coefficient of vertical acceleration.

  • kh – seismic coefficient of horizontal acceleration.

  • psi – back face inclination of the structure (< PI/2)

  • beta – slope inclination of backfill.

  • delta_ad – angle of friction soil - structure.

  • Kas – static earth pressure coefficient

getShearModulus()

Return the shear modulus of the soil.

submergedGamma(waterDensity=1000.0)

Return the submerged specific gravity of the soil.

Parameters

waterDensity – water density.

Earth pressure

earth_pressure.py: earth pressures for retaining structures.

class geotechnics.earth_pressure.BellSoil(phi, c, beta=0.0, rho=2100.0, rhoSat=None, phi_cv=None, gammaMPhi=1.0, gammaMc=1.0, E=100000000.0, nu=0.3, Kh=None, deltaAngle=0.0, gammaRe=1.0)

Bases: geotechnics.earth_pressure.SoilModel

Soil response according to Bell’s theory of earth pressure for clay.

Ka(alphaAngle=0.0, designValue=False)

Return the horizontal component of the active earth pressure coefficient according to Coulomb’s theory.

Parameters
  • alphaAngle – angle of the back of the retaining wall (radians).

  • designValue – if true use the design value of the internal friction.

Kp(alphaAngle=0.0, designValue=False)

Return the horizontal component of the passive earth pressure coefficient according to Coulomb’s theory.

Parameters
  • alphaAngle – angle of the back of the retaining wall (radians).

  • designValue – if true use the design value of the internal friction.

getActivePressure(sg_v, alphaAngle=0.0, designValue=False)
Returns the active presure corresponding to the given vertical

pressure.

Parameters
  • sg_v – vertical stress.

  • alphaAngle – inclination of the back face.

  • designValue – if true use the design value of the internal friction.

getCoulombTensionCrackDepth(sg_v, alphaAngle=0.0, designValue=False)
Return the depth of the tension crack (the depth at which

active lateral earth pressure is cero due to soil cohesion).

Parameters
  • sg_v – vertical stress.

  • alphaAngle – angle of the back of the retaining wall (radians).

  • designValue – if true use the design value of the internal friction and the cohesion.

getPassivePressure(sg_v, alphaAngle=0.0, designValue=False)
Returns the passive presure corresponding to the given vertical

pressure.

Parameters
  • sg_v – vertical stress.

  • alphaAngle – inclination of the back face.

  • designValue – if true use the design value of the internal friction.

class geotechnics.earth_pressure.CoulombSoil(phi, beta=0.0, rho=2100.0, rhoSat=None, phi_cv=None, gammaMPhi=1.0, E=100000000.0, nu=0.3, Kh=None, deltaAngle=0.0, gammaRe=1.0)

Bases: geotechnics.earth_pressure.SoilModel

Soil response according to Coulomb’s theory.

Ka(alphaAngle=0.0, designValue=False)

Return the horizontal component of the active earth pressure coefficient according to Coulomb’s theory.

Parameters
  • alphaAngle – angle of the back of the retaining wall (radians).

  • designValue – if true use the design value of the internal friction.

Kp(alphaAngle=0.0, designValue=False)

Return the horizontal component of the passive earth pressure coefficient according to Coulomb’s theory.

Parameters
  • alphaAngle – angle of the back of the retaining wall (radians).

  • designValue – if true use the design value of the internal friction.

class geotechnics.earth_pressure.RankineSoil(phi, beta=0.0, rho=2100.0, rhoSat=None, gammaMPhi=1.0, Kh=None, deltaAngle=0.0, gammaRe=1.0)

Bases: geotechnics.earth_pressure.SoilModel

From Wikipedia: Rankine’s theory, developed in 1857, is a stress field solution that predicts active and passive earth pressure. It assumes that the soil is cohesionless, the wall is frictionless, the soil-wall interface is vertical, the failure surface on which the soil moves is planar, and the resultant force is angled parallel to the backfill surface. The equations for active and passive lateral earth pressure coefficients are given below. Note that φ is the angle of shearing resistance of the soil and the backfill is inclined at angle β to the horizontal.

Ka(alphaAngle=0.0, designValue=False)

Returns Rankine’s active earth pressure coefficient.

Parameters
  • alphaAngle – inclination of the back face.

  • designValue – if true use the design value of the internal friction.

Kp(alphaAngle=0.0, designValue=False)

Returns Rankine’s passive earth pressure coefficient.

Parameters
  • alphaAngle – angle of the back of the retaining wall (radians).

  • designValue – if true use the design value of the internal friction.

class geotechnics.earth_pressure.SoilModel(beta=0.0, Kh=None, deltaAngle=0.0, gammaRe=1.0)

Bases: object

Soil response abstract base class.

Variables

beta – angle of backfill with horizontal

;ivar Kh: horizontal reaction modulus of the soil. :ivar deltaAngle: friction angle between the soil and the back surface

of the retaining wall.

Variables

gammaRe – partial safety factor for passive earth resistance.

K0Jaky(designValue=False)

Returns Jaky’s coefficient (earth pressure at rest).

Parameters

designValue – if true use the design value of the internal friction.

defHorizontalSubgradeReactionNlMaterial(preprocessor, name, sg_v, tributaryArea, alphaAngle=0.0, designValue=False)

Return the points of the force-displacement diagram.

Parameters
  • preprocessor – preprocessor of the finite element problem.

  • name – name identifying the material (if None compute a suitable name)

  • sg_v – vertical stress.

  • tributaryArea – area on which the pressure acts.

  • alphaAngle – inclination of the back face.

  • designValue – if true use the design value of the geotechnical parameters.

gamma()

Return the specific weight of soil.

getActivePressure(sg_v, alphaAngle=0.0, designValue=False)
Returns the active presure corresponding to the given vertical

pressure.

Parameters
  • sg_v – vertical stress.

  • alphaAngle – inclination of the back face.

  • designValue – if true use the design value of the internal friction.

getAtRestPressure(sg_v, designValue=False)
Returns the at-rest presure corresponding to the given vertical

pressure.

Parameters
  • z – depth to compute the pressure.

  • designValue – if true use the design value of the internal friction.

getDeltaAngleActivePressure(alphaAngle=0.0)
Returns the angle of the earth pressure with respect to the

wall back face.

Parameters

alphaAngle – inclination of the back face.

getEarthThrusts(sg_v, tributaryArea, alphaAngle=0.0, designValue=False)
Returns the active, at-rest and passive presure corresponding to

the given vertical pressure.

Parameters
  • sg_v – vertical stress.

  • tributaryArea – area on which the pressure acts.

  • alphaAngle – inclination of the back face.

  • designValue – if true use the design value of the internal friction.

getPassivePressure(sg_v, alphaAngle=0.0, designValue=False)
Returns the passive presure corresponding to the given vertical

pressure.

Parameters
  • sg_v – vertical stress.

  • alphaAngle – inclination of the back face.

  • designValue – if true use the design value of the internal friction.

getVerticalStressAtDepth(z, waterTableDepth=6371000.0, waterDensity=1000.0)

Returns the vertical presure at depth z assuming that the soil is homogeneous along the given depth.

Parameters
  • z – depth to compute the pressure.

  • waterTableDepth – depth of the water table.

  • waterDensity – water density.

phi(designValue=False)

Return the specific weight of soil.

Parameters

designValue – if true use the design value of the angle of internal friction.

rho()

Return the soil density.

submergedGamma(waterDensity=1000.0)

Return the submerged gamma of the soil.

Parameters

waterDensity – water density.

geotechnics.earth_pressure.active_pressure_culmann_method(soil, wallBack, backfillProfile, delta=0.0, numValues=8)

Return the active earth pressure according to Culmann Method.

Parameters
  • soil – soil model.

  • wallBack – 2D segment (geom.Segment2d) representing the back of the wall. The first point of the segment is the top of the wall and the second one corresponds to the bottom.

  • backfillProfile – 2D polyline representing the profile of the backfill.

  • delta – friction angle of the soil and the wall.

  • numValues – number of test values along the backfill.

geotechnics.earth_pressure.def_ey_basic_material(preprocessor, name, E, upperYieldStress, lowerYieldStress)
Constructs an elastic perfectly-plastic uniaxial material adapted

to represent the horizontal thrust of a soil.

Parameters
  • preprocessor – preprocessor of the finite element problem.

  • name – name identifying the material (if None compute a suitable name)

  • E – tangent in the elastic zone of the stress-strain diagram

  • upperYieldStress – stress at which material reaches plastic state in decompression.

  • lowerYieldStress – stress at which material reaches plastic state in compression.

geotechnics.earth_pressure.eq_coulomb(a, b, phi, d, p)

Return the lateral earth pressure caused by a uniform load q action over the backfill surface according to Coulomb’s theory.

Parameters
  • a – angle of the back of the retaining wall (radians).

  • b – slope of the backfill (radians).

  • phi – internal friction angle of the soil (radians).

  • d – friction angle between soil an back of retaining wall (radians).

  • p – Uniform load.

geotechnics.earth_pressure.eql_coulomb(x, H, z, ql)

Return the earth pressure due to a linear load ql acting on a line parallel to the top of the wall on the surface of the retained backfill.

Parameters
  • x – Distance from the top of the back and the linea where the load is applied.

  • H – Depth of the bottom end of the wall back.

  • z – depth of the point for which the pressure is computed.

  • l – value of the linear load.

geotechnics.earth_pressure.eqp_coulomb(x, H, z, qp)

Return the earth pressure resulting from a vertical point load qp acting behind a retaining wall and is contained in the same vertical plane of the wall section.

Parameters
  • x – Distance from the top of the trasdós to the point of application of the load.

  • H – Profundidad del extremo inferior del trasdós.

  • z – depth of the point for which the pressure is computed.

  • qp – punctual load

geotechnics.earth_pressure.get_earth_thrusts(sg_v, tributaryArea, Ka, K0, Kp)

Return the earth thrusts corresponding to the given argumenst.

Parameters
  • sg_v – vertical stress.

  • tributaryArea – area on which the pressure acts.

  • Ka – active earth pressure coefficient.

  • K0 – earth pressure at rest coefficient.

  • Kp – passive earth pressure coefficient.

geotechnics.earth_pressure.get_horizontal_soil_reaction_diagram(sg_v, tributaryArea, Ka, K0, Kp, Kh)

Return the points of the force-displacement diagram.

Parameters
  • sg_v – vertical stress.

  • tributaryArea – area on which the pressure acts.

  • Ka – active earth pressure coefficient.

  • K0 – earth pressure at rest coefficient.

  • Kp – passive earth pressure coefficient.

  • Kh – horizontal Winkler modulus.

geotechnics.earth_pressure.k_janssen(k, d, B, z)

Lateral earth pressure coefficient for limited backfills according to Janssen’s Theory (1895) and Kniss et Al (2007):

Parameters
  • k – lateral earth pressure (usually k= K_0).

  • d – friction angle between soil an back of retaining wall (radians).

  • B – width of the backfill (radians).

  • z – depth from top of wall.

geotechnics.earth_pressure.ka_coulomb(a, b, phi, d)

Return the active earth pressure coefficient according to Coulomb theory.

Parameters
  • a – angle of the back of the retaining wall (radians).

  • b – slope of the backfill (radians).

  • phi – internal friction angle of the soil (radians).

  • d – friction angle between soil an back of retaining wall (radians).See Jiménez Salas, Geotecnia y Cimientos page 682.

geotechnics.earth_pressure.ka_rankine(b, phi)

Return the active earth pressure coefficient according to Rankine theory.

Parameters
  • b – slope of the backfill (radians).

  • phi – internal friction angle of the soil (radians).

geotechnics.earth_pressure.kah_coulomb(a, b, phi, d)

Return the horizontal component of the active earth pressure coefficient according to Coulomb’s theory.

Parameters
  • a – angle of the back of the retaining wall (radians).

  • b – slope of the backfill (radians).

  • phi – internal friction angle of the soil (radians).

  • d – friction angle between soil an back of retaining wall (radians).

geotechnics.earth_pressure.kav_coulomb(a, b, phi, d)

Return the vertical component of the active earth pressure coefficient according to Coulomb’s theory.

Parameters
  • a – angle of the back of the retaining wall (radians).

  • b – slope of the backfill (radians).

  • phi – internal friction angle of the soil (radians).

  • d – friction angle between soil an back of retaining wall (radians).

geotechnics.earth_pressure.kp_coulomb(a, b, phi, d)

Return the passive earth pressure coefficient according to Coulomb’s theory.

Parameters
  • a – angle of the back of the retaining wall (radians).

  • b – slope of the backfill (radians).

  • phi – internal friction angle of the soil (radians).

  • d – friction angle between soil an back of retaining wall (radians).

geotechnics.earth_pressure.kp_rankine(b, phi)

Return the passive earth pressure coefficient according to Rankine theory.

Parameters
  • b – slope of the backfill (radians).

  • phi – internal friction angle of the soil (radians).

geotechnics.earth_pressure.phi_rankine_from_active_coefficient(b, ka)
Return the soil internal friction angle of the soil, given its active

earth pressure coefficient according to Rankine theory.

Parameters
  • b – slope of the backfill (radians).

  • ka – active earth pressure coefficiente according to Rankine theory.

Mononobe okabe

Mononobe-Okabe theory.

geotechnics.mononobe_okabe.active_earth_pressure_coefficient_Kad(psi, phi, theta, delta_ad, beta)

Return the active earth pressure coefficient according to Mononobe-Okabe according to EN1998-5 §E.4.

Parameters
  • psi – back face inclination of the structure (<= PI/2)

  • phi – angle of internal friction of soil [radians].

  • theta – angle of weight with vertical: - kv= seismic coefficient of vertical acceleration. - kh= seismic coefficient of horizontal acceleration. - tan(theta)= kh/(1+kv) AND tan(theta)= kh/(1-kv)

  • delta_ad – angle of friction soil - structure [radians].

  • beta – slope inclination of terrain.

geotechnics.mononobe_okabe.overpressure_dry(H, gamma_soil, kv, kh, psi, phi, delta_ad, beta, Kas)

Overpressure due to seismic action according to Mononobe-Okabe

Parameters
  • H – height of the structure.

  • gamma_soil – unit weight of soil (backfill)

  • kv – seismic coefficient of vertical acceleration.

  • kh – seismic coefficient of horizontal acceleration.

  • psi – back face inclination of the structure (<= PI/2) [radians]

  • phi – angle of internal friction of soil [radians].

  • delta_ad – angle of friction soil - structure.

  • beta – slope inclination of backfill.

  • Kas – static earth pressure coefficient

geotechnics.mononobe_okabe.passive_earth_pressure_coefficient_Kpd(psi, phi, theta, beta)

Return the passive earth pressure coefficient according to Mononobe-Okabe according to EN1998-5 §E.4.

Parameters
  • psi – back face inclination of the structure (<= PI/2) [radians]

  • phi – angle of internal friction of soil [radians].

  • theta – angle of weight with vertical: - kv= seismic coefficient of vertical acceleration. - kh= seismic coefficient of horizontal acceleration. - tan(theta)= kh/(1+kv) AND tan(theta)= kh/(1-kv)

  • beta – slope inclination of terrain.

geotechnics.mononobe_okabe.theta_values(kh, kv)
Return the values of the auxiliary angle theta for the case of water

table below the retaining wall in accordance with EN1998-5 equation (E.6).

Parameters
  • kh – horizontal seismic coefficient.

  • kv – vertical seismic coefficient.

Settlement

Soil settlement.

Code based on the chapter 5 of the book “Principles of Foundation Engineering, SI Edition. Seventh edition. Braja M. Das. ISBN-13: 978-0-495-66812-1

geotechnics.settlement.average_vertical_stress_increment_under_concentrated_load(P, x, y, z1, z2, zInc=0.2)

Return the average increment in the vertical stress of a the points between z1 and z2.

Parameters
  • P – value of the load.

  • x – x-coordinate of the point relative to the loaded point.

  • y – y-coordinate of the point relative to the loaded point.

  • z1 – upper limit of the z-coordinate.

  • z2 – lower limit of the z-coordinate.

  • zInc – size of the discretization.

geotechnics.settlement.average_vertical_stress_increment_under_rectangular_loaded_area(q, B, L, x, y, z1, z2, eSize=0.1, zInc=0.2)

Return the average increment in the vertical stress of the points between z1 and z2 inside an homogeneous and elastic soil due to a load distributed on a rectangular area.

Parameters
  • q – pressure on the loaded area.

  • B – dimension of the rectangular area in direction x.

  • L – dimension of the rectangular area in direction y.

  • x – x-coordinate of the point relative to the rectangle center.

  • y – y-coordinate of the point relative to the rectangle center.

  • z – z-coordinate of the point relative to the rectangle center.

  • z1 – upper limit of the z-coordinate.

  • z2 – lower limit of the z-coordinate.

  • zInc – size of the discretization.

geotechnics.settlement.vertical_stress_increment_under_rectangular_loaded_area(q, B, L, x, y, z, eSize=0.1)

Return the increment in the vertical stress of a point inside an homogeneous and elastic soil due to a load distributed on a rectangular area.

Parameters
  • q – pressure on the loaded area.

  • B – dimension of the rectangular area in direction x.

  • L – dimension of the rectangular area in direction y.

  • eSize – length of the side for the discretization.

  • x – x-coordinate of the point relative to the rectangle center.

  • y – y-coordinate of the point relative to the rectangle center.

  • z – z-coordinate of the point relative to the rectangle center.