geolysis 0.10.3__py3-none-any.whl → 0.12.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
geolysis/__init__.py CHANGED
@@ -1,5 +1,5 @@
1
1
  from . import bearing_capacity, foundation, soil_classifier, spt
2
2
 
3
- __version__ = "0.10.3"
3
+ __version__ = "0.12.0"
4
4
 
5
5
  __all__ = ["foundation", "soil_classifier", "spt", "bearing_capacity"]
@@ -10,12 +10,12 @@ from ._cohl import (
10
10
  )
11
11
 
12
12
  __all__ = [
13
- "create_abc_4_cohesionless_soils",
14
- "ABCType",
15
13
  "BowlesABC4PadFoundation",
16
14
  "BowlesABC4MatFoundation",
17
15
  "MeyerhofABC4PadFoundation",
18
16
  "MeyerhofABC4MatFoundation",
19
17
  "TerzaghiABC4PadFoundation",
20
18
  "TerzaghiABC4MatFoundation",
19
+ "ABCType",
20
+ "create_abc_4_cohesionless_soils",
21
21
  ]
@@ -1,4 +1,5 @@
1
1
  from abc import ABC, abstractmethod
2
+ from dataclasses import dataclass
2
3
  from typing import Annotated
3
4
 
4
5
  from func_validator import (
@@ -8,17 +9,26 @@ from func_validator import (
8
9
  )
9
10
 
10
11
  from geolysis.foundation import Foundation
12
+ from geolysis.utils import round_, add_repr
11
13
 
12
14
 
15
+ @dataclass
16
+ class AllowableBearingCapacityResult:
17
+ allowable_bearing_capacity: float
18
+ depth_factor: float
19
+ water_correction_factor: float = 1.0
20
+
21
+
22
+ @add_repr
13
23
  class AllowableBearingCapacity(ABC):
14
24
  #: Maximum tolerable foundation settlement (mm).
15
25
  MAX_TOL_SETTLEMENT = 25.4
16
26
 
17
27
  def __init__(
18
- self,
19
- corrected_spt_n_value: float,
20
- tol_settlement: float,
21
- foundation_size: Foundation,
28
+ self,
29
+ corrected_spt_n_value: float,
30
+ tol_settlement: float,
31
+ foundation_size: Foundation,
22
32
  ) -> None:
23
33
  self.corrected_spt_n_value = corrected_spt_n_value
24
34
  self.tol_settlement = tol_settlement
@@ -42,7 +52,8 @@ class AllowableBearingCapacity(ABC):
42
52
  @tol_settlement.setter
43
53
  @validate_func_args
44
54
  def tol_settlement(
45
- self, tol_settlement: Annotated[float, MustBeLessThanOrEqual(25.4)]
55
+ self,
56
+ tol_settlement: Annotated[float, MustBeLessThanOrEqual(25.4)],
46
57
  ):
47
58
  self._tol_settlement = tol_settlement
48
59
 
@@ -56,11 +67,24 @@ class AllowableBearingCapacity(ABC):
56
67
  width = self.foundation_size.width
57
68
  return min(1.0 + 0.33 * depth / width, 1.33)
58
69
 
59
- def bearing_capacity_results(self) -> dict:
60
- return {
61
- "bearing_capacity": self.bearing_capacity(),
62
- "depth_factor": self._fd(),
63
- }
70
+ def bearing_capacity_results(self) -> AllowableBearingCapacityResult:
71
+ """Return a dictionary of bearing capacity results with
72
+ intermediate calculations.
73
+
74
+ !!! info "Added in v0.11.0"
75
+ """
76
+ return AllowableBearingCapacityResult(
77
+ allowable_bearing_capacity=self.allowable_bearing_capacity(),
78
+ depth_factor=self._fd(),
79
+ )
80
+
81
+ @round_(ndigits=1)
82
+ def allowable_bearing_capacity(self):
83
+ """Calculates the allowable bearing capacity.
84
+
85
+ !!! info "Added in v0.12.0"
86
+ """
87
+ return self._bearing_capacity()
64
88
 
65
89
  @abstractmethod
66
- def bearing_capacity(self): ...
90
+ def _bearing_capacity(self): ...
@@ -8,35 +8,16 @@ class BowlesABC4PadFoundation(AllowableBearingCapacity):
8
8
  r"""Allowable bearing capacity for pad foundation on cohesionless
9
9
  soils according to `Bowles (1997)`.
10
10
 
11
- $$
12
- q_a(kPa) = 19.16(N_1)_{55} f_d\left(\dfrac{S}{25.4}\right),
13
- \ B \ \le \ 1.2m
14
- $$
15
-
16
- $$
17
- q_a(kPa) = 11.98(N_1)_{55}\left(\dfrac{3.28B + 1}{3.28B} \right)^2
18
- f_d \left(\dfrac{S}{25.4}\right), \ B \ \gt 1.2m
19
- $$
20
-
21
- $$
22
- f_d = 1 + 0.33 \cdot \frac{D_f}{B} \le 1.33
23
- $$
24
-
25
- - $q_a$ (kPa): Allowable bearing capacity
26
- - $N$: Corrected SPT N-value
27
- - $f_d$: Depth factor
28
- - $S$ (mm): Tolerable settlement
29
- - $B$ (m): Width of foundation footing
30
- - $D_f$ (m): Depth of foundation footing
31
- - $D_w$ (m): Depth of water below ground level
11
+ See [implementation](../formulas/allowable-bearing-capacity.md/#bowles-bearing-capacity-for-pad-foundation)
12
+ for more details on bearing capacity equation used.
32
13
 
33
14
  """
34
15
 
35
16
  def __init__(
36
- self,
37
- corrected_spt_n_value: float,
38
- tol_settlement: float,
39
- foundation_size: Foundation,
17
+ self,
18
+ corrected_spt_n_value: float,
19
+ tol_settlement: float,
20
+ foundation_size: Foundation,
40
21
  ) -> None:
41
22
  """
42
23
  :param corrected_spt_n_value: Statistical average of corrected
@@ -54,7 +35,7 @@ class BowlesABC4PadFoundation(AllowableBearingCapacity):
54
35
  )
55
36
 
56
37
  @round_(ndigits=2)
57
- def bearing_capacity(self) -> float:
38
+ def _bearing_capacity(self) -> float:
58
39
  """
59
40
  Calculate the allowable bearing capacity of the pad foundation.
60
41
  """
@@ -65,11 +46,11 @@ class BowlesABC4PadFoundation(AllowableBearingCapacity):
65
46
  return 19.16 * n_corr * self._fd() * self._sr()
66
47
 
67
48
  return (
68
- 11.98
69
- * n_corr
70
- * ((3.28 * width + 1) / (3.28 * width)) ** 2
71
- * self._fd()
72
- * self._sr()
49
+ 11.98
50
+ * n_corr
51
+ * ((3.28 * width + 1) / (3.28 * width)) ** 2
52
+ * self._fd()
53
+ * self._sr()
73
54
  )
74
55
 
75
56
 
@@ -77,25 +58,13 @@ class BowlesABC4MatFoundation(BowlesABC4PadFoundation):
77
58
  r"""Allowable bearing capacity for mat foundation on cohesionless
78
59
  soils according to `Bowles (1997)`.
79
60
 
80
- $$
81
- q_a(kPa) = 11.98(N_1)_{55}f_d\left(\dfrac{S}{25.4}\right)
82
- $$
83
-
84
- $$
85
- f_d = 1 + 0.33 \cdot \frac{D_f}{B} \le 1.33
86
- $$
61
+ See [implementation](../formulas/allowable-bearing-capacity.md/#bowles-bearing-capacity-for-mat-foundation)
62
+ for more details on bearing capacity equation used.
87
63
 
88
- - $q_a$ (kPa): Allowable bearing capacity
89
- - $N$: Corrected SPT N-value
90
- - $f_d$: Depth factor
91
- - $S$ (mm): Tolerable settlement
92
- - $B$ (m): Width of foundation footing
93
- - $D_f$ (m): Depth of foundation footing
94
- - $D_w$ (m): Depth of water below ground level
95
64
  """
96
65
 
97
66
  @round_(ndigits=2)
98
- def bearing_capacity(self) -> float:
67
+ def _bearing_capacity(self) -> float:
99
68
  """
100
69
  Calculate the allowable bearing capacity of the mat foundation.
101
70
  """
@@ -5,37 +5,19 @@ from ._core import AllowableBearingCapacity
5
5
 
6
6
 
7
7
  class MeyerhofABC4PadFoundation(AllowableBearingCapacity):
8
- r"""Allowable bearing capacity for pad foundation on cohesionless
8
+ """Allowable bearing capacity for pad foundation on cohesionless
9
9
  soils according to `Meyerhof (1956)`.
10
10
 
11
- $$
12
- q_a(kPa) = 12N f_d\left(\dfrac{S}{25.4}\right), \ B \ \le 1.2m
13
- $$
14
-
15
- $$
16
- q_a(kPa) = 8N\left(\dfrac{3.28B + 1}{3.28B} \right)^2 f_d\left(
17
- \dfrac{S}{25.4}\right), \ B \ \gt 1.2m
18
- $$
19
-
20
- $$
21
- f_d = 1 + 0.33 \cdot \frac{D_f}{B} \le 1.33
22
- $$
23
-
24
- - $q_a$ (kPa): Allowable bearing capacity
25
- - $N$: Corrected SPT N-value
26
- - $f_d$: Depth factor
27
- - $S$ (mm): Tolerable settlement
28
- - $B$ (m): Width of foundation footing
29
- - $D_f$ (m): Depth of foundation footing
30
- - $D_w$ (m): Depth of water below ground level
11
+ See [implementation](../formulas/allowable-bearing-capacity.md/#meyerhof-bearing-capacity-for-pad-foundation)
12
+ for more details on bearing capacity equation used.
31
13
 
32
14
  """
33
15
 
34
16
  def __init__(
35
- self,
36
- corrected_spt_n_value: float,
37
- tol_settlement: float,
38
- foundation_size: Foundation,
17
+ self,
18
+ corrected_spt_n_value: float,
19
+ tol_settlement: float,
20
+ foundation_size: Foundation,
39
21
  ):
40
22
  """
41
23
  :param corrected_spt_n_value: Average uncorrected SPT N-value
@@ -53,7 +35,7 @@ class MeyerhofABC4PadFoundation(AllowableBearingCapacity):
53
35
  )
54
36
 
55
37
  @round_(ndigits=2)
56
- def bearing_capacity(self):
38
+ def _bearing_capacity(self):
57
39
  """
58
40
  Calculates the allowable bearing capacity of the pad foundation.
59
41
  """
@@ -64,37 +46,25 @@ class MeyerhofABC4PadFoundation(AllowableBearingCapacity):
64
46
  return 12 * n_corr * self._fd() * self._sr()
65
47
 
66
48
  return (
67
- 8
68
- * n_corr
69
- * ((3.28 * width + 1) / (3.28 * width)) ** 2
70
- * self._fd()
71
- * self._sr()
49
+ 8
50
+ * n_corr
51
+ * ((3.28 * width + 1) / (3.28 * width)) ** 2
52
+ * self._fd()
53
+ * self._sr()
72
54
  )
73
55
 
74
56
 
75
57
  class MeyerhofABC4MatFoundation(MeyerhofABC4PadFoundation):
76
- r"""Allowable bearing capacity for mat foundation on cohesionless
58
+ """Allowable bearing capacity for mat foundation on cohesionless
77
59
  soils according to `Meyerhof (1956)`.
78
60
 
79
- $$
80
- q_a(kPa) = 8 N f_d\left(\dfrac{S}{25.4}\right)
81
- $$
82
-
83
- $$
84
- f_d = 1 + 0.33 \cdot \frac{D_f}{B} \le 1.33
85
- $$
61
+ See [implementation](../formulas/allowable-bearing-capacity.md/#meyerhof-bearing-capacity-for-mat-foundation)
62
+ for more details on bearing capacity equation used.
86
63
 
87
- - $q_a$ (kPa): Allowable bearing capacity
88
- - $N$: Corrected SPT N-value
89
- - $f_d$: Depth factor
90
- - $S$ (mm): Tolerable settlement
91
- - $B$ (m): Width of foundation footing
92
- - $D_f$ (m): Depth of foundation footing
93
- - $D_w$ (m): Depth of water below ground level
94
64
  """
95
65
 
96
66
  @round_(ndigits=2)
97
- def bearing_capacity(self):
67
+ def _bearing_capacity(self):
98
68
  """Calculate the allowable bearing capacity of the mat foundation."""
99
69
  n_corr = self.corrected_spt_n_value
100
70
  return 8 * n_corr * self._fd() * self._sr()
@@ -5,47 +5,19 @@ from ._core import AllowableBearingCapacity
5
5
 
6
6
 
7
7
  class TerzaghiABC4PadFoundation(AllowableBearingCapacity):
8
- r"""Allowable bearing capacity for pad foundation on cohesionless
8
+ """Allowable bearing capacity for pad foundation on cohesionless
9
9
  soils according to `Terzaghi & Peck (1948)`.
10
10
 
11
- $$
12
- q_a(kPa) = 12N \dfrac{1}{c_w f_d}\left(\dfrac{S}{25.4}\right),
13
- \ B \ \le 1.2m
14
- $$
15
-
16
- $$
17
- q_a(kPa) = 8N\left(\dfrac{3.28B + 1}{3.28B} \right)^2\dfrac{1}
18
- {c_w f_d}\left(\dfrac{S}{25.4}\right), \ B \ \gt 1.2m
19
- $$
20
-
21
- $$
22
- f_d = 1 + 0.25 \cdot \frac{D_f}{B} \le 1.25
23
- $$
24
-
25
- $$
26
- c_w = 2 - \frac{D_w}{2B} \le 2, D_w \gt D_f
27
- $$
28
-
29
- $$
30
- c_w = 2 - \frac{D_f}{2B} \le 2, D_w \le D_f
31
- $$
32
-
33
- - $q_a$ (kPa): Allowable bearing capacity
34
- - $N$: Corrected SPT N-value
35
- - $f_d$: Depth factor
36
- - $c_w$: Water correction factor
37
- - $S$ (mm): Tolerable settlement
38
- - $B$ (m): Width of foundation footing
39
- - $D_f$ (m): Depth of foundation footing
40
- - $D_w$ (m): Depth of water below ground level
11
+ See [implementation](../formulas/allowable-bearing-capacity.md/#terzaghi-bearing-capacity-for-pad-foundation)
12
+ for more details on bearing capacity equation used.
41
13
 
42
14
  """
43
15
 
44
16
  def __init__(
45
- self,
46
- corrected_spt_n_value: float,
47
- tol_settlement: float,
48
- foundation_size: Foundation,
17
+ self,
18
+ corrected_spt_n_value: float,
19
+ tol_settlement: float,
20
+ foundation_size: Foundation,
49
21
  ) -> None:
50
22
  """
51
23
  :param corrected_spt_n_value: Lowest (or average) uncorrected
@@ -85,7 +57,7 @@ class TerzaghiABC4PadFoundation(AllowableBearingCapacity):
85
57
  return min(cw, 2.0)
86
58
 
87
59
  @round_(ndigits=2)
88
- def bearing_capacity(self):
60
+ def _bearing_capacity(self):
89
61
  """
90
62
  Calculates the allowable bearing capacity of the pad foundation.
91
63
  """
@@ -96,11 +68,11 @@ class TerzaghiABC4PadFoundation(AllowableBearingCapacity):
96
68
  return 12 * n_corr * (1 / (self._cw() * self._fd())) * self._sr()
97
69
 
98
70
  return (
99
- 8
100
- * n_corr
101
- * ((3.28 * width + 1) / (3.28 * width)) ** 2
102
- * (1 / (self._cw() * self._fd()))
103
- * self._sr()
71
+ 8
72
+ * n_corr
73
+ * ((3.28 * width + 1) / (3.28 * width)) ** 2
74
+ * (1 / (self._cw() * self._fd()))
75
+ * self._sr()
104
76
  )
105
77
 
106
78
  def bearing_capacity_results(self) -> dict:
@@ -110,37 +82,16 @@ class TerzaghiABC4PadFoundation(AllowableBearingCapacity):
110
82
 
111
83
 
112
84
  class TerzaghiABC4MatFoundation(TerzaghiABC4PadFoundation):
113
- r"""Allowable bearing capacity for mat foundation on cohesionless
85
+ """Allowable bearing capacity for mat foundation on cohesionless
114
86
  soils according to `Terzaghi & Peck (1948)`.
115
87
 
116
- $$
117
- q_a(kPa) = 8N\dfrac{1}{c_w f_d}\left(\dfrac{S}{25.4}\right)
118
- $$
119
-
120
- $$
121
- f_d = 1 + 0.25 \cdot \frac{D_f}{B} \le 1.25
122
- $$
123
-
124
- $$
125
- c_w = 2 - \frac{D_w}{2B} \le 2, D_w \gt D_f
126
- $$
127
-
128
- $$
129
- c_w = 2 - \frac{D_f}{2B} \le 2, D_w \le D_f
130
- $$
131
-
132
- - $q_a$ (kPa): Allowable bearing capacity
133
- - $N$: Corrected SPT N-value
134
- - $f_d$: Depth factor
135
- - $c_w$: Water correction factor
136
- - $S$ (mm): Tolerable settlement
137
- - $B$ (m): Width of foundation footing
138
- - $D_f$ (m): Depth of foundation footing
139
- - $D_w$ (m): Depth of water below ground level
88
+ See [implementation](../formulas/allowable-bearing-capacity.md/#terzaghi-bearing-capacity-for-mat-foundation)
89
+ for more details on bearing capacity equation used.
90
+
140
91
  """
141
92
 
142
93
  @round_(ndigits=2)
143
- def bearing_capacity(self):
94
+ def _bearing_capacity(self):
144
95
  """
145
96
  Calculates the allowable bearing capacity of the mat foundation.
146
97
  """
@@ -16,13 +16,13 @@ from ._terzaghi_ubc import (
16
16
  from ._vesic_ubc import VesicUltimateBearingCapacity
17
17
 
18
18
  __all__ = [
19
- "UBCType",
20
19
  "TerzaghiUBC4StripFooting",
21
20
  "TerzaghiUBC4CircularFooting",
22
21
  "TerzaghiUBC4RectangularFooting",
23
22
  "TerzaghiUBC4SquareFooting",
24
23
  "HansenUltimateBearingCapacity",
25
24
  "VesicUltimateBearingCapacity",
25
+ "UBCType",
26
26
  "create_ubc_4_all_soil_types",
27
27
  ]
28
28
 
@@ -52,12 +52,13 @@ def create_ubc_4_all_soil_types(
52
52
  depth: float,
53
53
  width: float,
54
54
  length: Optional[float] = None,
55
+ saturated_unit_wgt: float = 20.5,
55
56
  eccentricity: float = 0.0,
56
57
  ground_water_level: Optional[float] = None,
57
58
  load_angle: float = 0.0,
58
59
  apply_local_shear: bool = False,
59
60
  shape: Shape | str = "square",
60
- ubc_type: Annotated[UBCType | str, MustBeMemberOf(UBCType)] = "hansen",
61
+ ubc_type: Annotated[UBCType | str, MustBeMemberOf(UBCType)] = "vesic",
61
62
  ) -> UltimateBearingCapacity:
62
63
  r"""A factory function that encapsulate the creation of ultimate
63
64
  bearing capacity.
@@ -70,6 +71,7 @@ def create_ubc_4_all_soil_types(
70
71
  :param depth: Depth of foundation (m).
71
72
  :param width: Width of foundation footing (m).
72
73
  :param length: Length of foundation footing (m).
74
+ :param saturated_unit_wgt: Saturated unit weight of soil ($kN/m^3$).
73
75
  :param eccentricity: The deviation of the foundation load from the
74
76
  center of gravity of the foundation footing.
75
77
  :param ground_water_level: Depth of water below ground level (m).
@@ -108,6 +110,7 @@ def create_ubc_4_all_soil_types(
108
110
  friction_angle=friction_angle,
109
111
  cohesion=cohesion,
110
112
  moist_unit_wgt=moist_unit_wgt,
113
+ saturated_unit_wgt=saturated_unit_wgt,
111
114
  foundation_size=fnd_size,
112
115
  apply_local_shear=apply_local_shear,
113
116
  )