Soil StressesΒΆ
Calculation of soil stresses (total, porewater, effective) are implemented in
the calculate_stress() method. This
section outlines the approach in creating a method that covers most cases
(multiple layers, varying water table) and allows to calculate stresses at any
vertical depth of interest, \(z\).
For more on soil stresses refer to the excellent book by Reese et al. (2006).
Note
For all cases presented below, positive (+) is upwards and reference (0) is at ground level.
Case A - single layer, stresses above and below water table
Consider the soil profile in Figure 2. A 16-ft sand layer with total unit weight of 90 lbf/ft3 and the water table at a depth of 10-ft. Point A is at depth, \(z\), of 6-ft and point B is at a depth, \(z\), of 14-ft below ground level.
The first takeaway comes with the introduction of the term \(z_w\), the vertical distance below the water table.
Takeaway No 1
Always calculate \(z_w\) and if negative, set \(z_w=0\). Hence:
Total stress at point A:
Pore water pressure at point A:
Effective stress at point A:
Total stress at point B:
Pore water pressure at point B:
Effective stress at point B:
The same example can be implemented in edafos as follows.
# Import the `SoilProfile` class
In [1]: from edafos.soil import SoilProfile
# Create a SoilProfile object with initial parameters
In [2]: caseA = SoilProfile(unit_system='English', water_table=10)
# Add layer properties
In [3]: caseA.add_layer(soil_type='cohesionless', height=16, tuw=90)
Out[3]: <edafos.soil.profile.SoilProfile at 0x10f5fe390>
# Stresses at point A
In [4]: total, pore, effective = caseA.calculate_stress(6, kind='all')
In [5]: print("Total Stress: {:0.3f}\nPore Water Pressure: {:0.3f}\n"
...: "Effective Stress: {:0.3f}".format(total, pore, effective))
...:
Total Stress: 0.540 kip / foot ** 2
Pore Water Pressure: 0.000 kip / foot ** 2
Effective Stress: 0.540 kip / foot ** 2
# Stresses at point B
In [6]: total, pore, effective = caseA.calculate_stress(14, kind='all')
In [7]: print("Total Stress: {:0.3f}\nPore Water Pressure: {:0.3f}\n"
...: "Effective Stress: {:0.3f}".format(total, pore, effective))
...:
Total Stress: 1.260 kip / foot ** 2
Pore Water Pressure: 0.250 kip / foot ** 2
Effective Stress: 1.010 kip / foot ** 2
You can also create a stress distribution plot:
(Source code, png, hires.png, pdf)
Case B - two layers, stresses above and below water table
Consider the soil profile in Figure 3. A 5-ft sand layer with total unit weight of 90 lbf/ft3, an 11-ft clay layer with total unit weight of 110 lbf/ft3 and the water table at a depth of 10-ft. Point A is at depth, \(z\), of 6-ft and point B is at a depth, \(z\), of 14-ft below ground level.
Takeaway No 2
Total stress in terms of \(z\):
Total stress at point A:
Pore water pressure at point A:
Effective stress at point A:
Total stress at point B:
Pore water pressure at point B:
Effective stress at point B:
Case B can be implemented in edafos as follows.
# Import the `SoilProfile` class
In [8]: from edafos.soil import SoilProfile
# Create a SoilProfile object with initial parameters
In [9]: caseB = SoilProfile(unit_system='English', water_table=10)
# Add layer properties
In [10]: caseB.add_layer(soil_type='cohesionless', height=5, tuw=90)
Out[10]: <edafos.soil.profile.SoilProfile at 0x10fda0b00>
In [11]: caseB.add_layer(soil_type='cohesive', height=11, tuw=110)

