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 +1 -1
- geolysis/bearing_capacity/abc/__init__.py +2 -2
- geolysis/bearing_capacity/abc/_cohl/_core.py +35 -11
- geolysis/bearing_capacity/abc/_cohl/bowles_abc.py +15 -46
- geolysis/bearing_capacity/abc/_cohl/meyerhof_abc.py +17 -47
- geolysis/bearing_capacity/abc/_cohl/terzaghi_abc.py +18 -67
- geolysis/bearing_capacity/ubc/__init__.py +5 -2
- geolysis/bearing_capacity/ubc/_core.py +129 -81
- geolysis/bearing_capacity/ubc/_hansen_ubc.py +37 -108
- geolysis/bearing_capacity/ubc/_terzaghi_ubc.py +47 -89
- geolysis/bearing_capacity/ubc/_vesic_ubc.py +78 -114
- geolysis/foundation.py +42 -9
- geolysis/soil_classifier.py +24 -26
- geolysis/spt.py +43 -115
- geolysis/{utils.py → utils/__init__.py} +14 -51
- geolysis/utils/math.py +57 -0
- {geolysis-0.10.3.dist-info → geolysis-0.12.0.dist-info}/METADATA +46 -38
- geolysis-0.12.0.dist-info/RECORD +23 -0
- geolysis-0.10.3.dist-info/RECORD +0 -22
- {geolysis-0.10.3.dist-info → geolysis-0.12.0.dist-info}/WHEEL +0 -0
- {geolysis-0.10.3.dist-info → geolysis-0.12.0.dist-info}/licenses/LICENSE.txt +0 -0
- {geolysis-0.10.3.dist-info → geolysis-0.12.0.dist-info}/top_level.txt +0 -0
geolysis/__init__.py
CHANGED
@@ -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
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
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
|
-
|
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) ->
|
60
|
-
|
61
|
-
|
62
|
-
|
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
|
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
|
-
|
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
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
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
|
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
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
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
|
-
|
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
|
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
|
-
|
8
|
+
"""Allowable bearing capacity for pad foundation on cohesionless
|
9
9
|
soils according to `Meyerhof (1956)`.
|
10
10
|
|
11
|
-
|
12
|
-
|
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
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
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
|
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
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
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
|
-
|
58
|
+
"""Allowable bearing capacity for mat foundation on cohesionless
|
77
59
|
soils according to `Meyerhof (1956)`.
|
78
60
|
|
79
|
-
|
80
|
-
|
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
|
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
|
-
|
8
|
+
"""Allowable bearing capacity for pad foundation on cohesionless
|
9
9
|
soils according to `Terzaghi & Peck (1948)`.
|
10
10
|
|
11
|
-
|
12
|
-
|
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
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
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
|
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
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
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
|
-
|
85
|
+
"""Allowable bearing capacity for mat foundation on cohesionless
|
114
86
|
soils according to `Terzaghi & Peck (1948)`.
|
115
87
|
|
116
|
-
|
117
|
-
|
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
|
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)] = "
|
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
|
)
|