geolysis 0.4.3__tar.gz → 0.4.5__tar.gz

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.
Files changed (36) hide show
  1. {geolysis-0.4.3 → geolysis-0.4.5}/PKG-INFO +40 -13
  2. {geolysis-0.4.3 → geolysis-0.4.5}/README.md +37 -11
  3. geolysis-0.4.5/geolysis/__init__.py +5 -0
  4. geolysis-0.4.5/geolysis/bearing_capacity/__init__.py +0 -0
  5. geolysis-0.4.5/geolysis/bearing_capacity/abc/__init__.py +0 -0
  6. geolysis-0.4.5/geolysis/bearing_capacity/abc/cohl/__init__.py +146 -0
  7. geolysis-0.4.5/geolysis/bearing_capacity/abc/cohl/_core.py +55 -0
  8. geolysis-0.4.5/geolysis/bearing_capacity/abc/cohl/bowles_abc.py +107 -0
  9. geolysis-0.4.5/geolysis/bearing_capacity/abc/cohl/meyerhof_abc.py +107 -0
  10. geolysis-0.4.5/geolysis/bearing_capacity/abc/cohl/terzaghi_abc.py +142 -0
  11. geolysis-0.4.5/geolysis/bearing_capacity/ubc/__init__.py +160 -0
  12. geolysis-0.4.5/geolysis/bearing_capacity/ubc/_core.py +192 -0
  13. geolysis-0.4.5/geolysis/bearing_capacity/ubc/hansen_ubc.py +297 -0
  14. geolysis-0.4.5/geolysis/bearing_capacity/ubc/terzaghi_ubc.py +259 -0
  15. geolysis-0.4.5/geolysis/bearing_capacity/ubc/vesic_ubc.py +303 -0
  16. {geolysis-0.4.3 → geolysis-0.4.5}/geolysis/foundation.py +51 -17
  17. {geolysis-0.4.3 → geolysis-0.4.5}/geolysis/soil_classifier.py +26 -25
  18. {geolysis-0.4.3 → geolysis-0.4.5}/geolysis/spt.py +196 -75
  19. geolysis-0.4.5/geolysis/utils/__init__.py +100 -0
  20. geolysis-0.4.5/geolysis/utils/validators.py +80 -0
  21. {geolysis-0.4.3 → geolysis-0.4.5}/geolysis.egg-info/PKG-INFO +40 -13
  22. geolysis-0.4.5/geolysis.egg-info/SOURCES.txt +32 -0
  23. {geolysis-0.4.3 → geolysis-0.4.5}/pyproject.toml +3 -2
  24. {geolysis-0.4.3 → geolysis-0.4.5}/tests/test_spt.py +24 -2
  25. geolysis-0.4.3/geolysis/__init__.py +0 -1
  26. geolysis-0.4.3/geolysis.egg-info/SOURCES.txt +0 -18
  27. {geolysis-0.4.3 → geolysis-0.4.5}/LICENSE.txt +0 -0
  28. {geolysis-0.4.3 → geolysis-0.4.5}/geolysis.egg-info/dependency_links.txt +0 -0
  29. {geolysis-0.4.3 → geolysis-0.4.5}/geolysis.egg-info/requires.txt +0 -0
  30. {geolysis-0.4.3 → geolysis-0.4.5}/geolysis.egg-info/top_level.txt +0 -0
  31. {geolysis-0.4.3 → geolysis-0.4.5}/setup.cfg +0 -0
  32. {geolysis-0.4.3 → geolysis-0.4.5}/setup.py +0 -0
  33. {geolysis-0.4.3 → geolysis-0.4.5}/tests/test_foundation.py +0 -0
  34. {geolysis-0.4.3 → geolysis-0.4.5}/tests/test_soil_classifier.py +0 -0
  35. {geolysis-0.4.3 → geolysis-0.4.5}/tests/test_utils.py +0 -0
  36. {geolysis-0.4.3 → geolysis-0.4.5}/tests/test_validators.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: geolysis
3
- Version: 0.4.3
3
+ Version: 0.4.5
4
4
  Summary: geolysis is an opensource software for geotechnical engineering analysis and modeling.
5
5
  Author-email: Patrick Boateng <boatengpato.pb@gmail.com>
6
6
  License: MIT License
@@ -28,6 +28,7 @@ Provides-Extra: dev
28
28
  Requires-Dist: pytest; extra == "dev"
29
29
  Requires-Dist: pytest-cov; extra == "dev"
30
30
  Requires-Dist: coverage; extra == "dev"
31
+ Dynamic: license-file
31
32
 
32
33
  <div align="center">
33
34
  <img src="https://raw.githubusercontent.com/patrickboateng/geolysis/dev/docs/source/_static/branding/geolysislogo.svg"
@@ -147,7 +148,6 @@ SoilClf(symbol='SC', description='Clayey sands')
147
148
  >>> aashto_clf = create_soil_classifier(liquid_limit=34.1,
148
149
  ... plastic_limit=21.1,
149
150
  ... fines=47.88,
150
- ... sand=37.84, # Sand is optional for AASHTO classification
151
151
  ... clf_type="AASHTO")
152
152
  >>> clf = aashto_clf.classify()
153
153
  >>> clf
@@ -159,18 +159,45 @@ SoilClf(symbol='A-6(4)', description='Clayey soils')
159
159
 
160
160
  ```
161
161
 
162
+ Check out more examples
163
+ [here](https://docs.geolysis.io/en/latest/user_guide/getting_started.html#quick-start)
164
+
162
165
  ## Features
163
166
 
164
- | | |
165
- |----------------------------------------------|---------------------------------------|
166
- | **Soil Classification** | AASHTO Classification System |
167
- | | Unified Soil Classification System |
168
- | **Standard Penetration Test (SPT) Analysis** | SPT Energy Correction |
169
- | | SPT Overburden Pressure Correction |
170
- | | Dilatancy Correction |
171
- | | SPT N-Design Calculation |
172
- | **Bearing Capacity Estimation** | Allowable Bearing Capacity Estimation |
173
- | | Ultimate Bearing Capacity Estimation |
167
+ <table>
168
+ <tr>
169
+ <td><strong>Soil Classification</strong></td>
170
+ <td>AASHTO Classification System</td>
171
+ </tr>
172
+ <tr>
173
+ <td></td>
174
+ <td>Unified Soil Classification System</td>
175
+ </tr>
176
+ <tr>
177
+ <td><strong>Standard Penetration Test (SPT) Analysis</strong></td>
178
+ <td>SPT Energy Correction</td>
179
+ </tr>
180
+ <tr>
181
+ <td></td>
182
+ <td>SPT Overburden Pressure Correction</td>
183
+ </tr>
184
+ <tr>
185
+ <td></td>
186
+ <td>Dilatancy Correction</td>
187
+ </tr>
188
+ <tr>
189
+ <td></td>
190
+ <td>SPT N-Design Calculation</td>
191
+ </tr>
192
+ <tr>
193
+ <td><strong>Bearing Capacity Estimation</strong></td>
194
+ <td>Allowable Bearing Capacity Estimation</td>
195
+ </tr>
196
+ <tr>
197
+ <td></td>
198
+ <td>Ultimate Bearing Capacity Estimation</td>
199
+ </tr>
200
+ </table>
174
201
 
175
202
  ## Documentation
176
203
 
@@ -116,7 +116,6 @@ SoilClf(symbol='SC', description='Clayey sands')
116
116
  >>> aashto_clf = create_soil_classifier(liquid_limit=34.1,
117
117
  ... plastic_limit=21.1,
118
118
  ... fines=47.88,
119
- ... sand=37.84, # Sand is optional for AASHTO classification
120
119
  ... clf_type="AASHTO")
121
120
  >>> clf = aashto_clf.classify()
122
121
  >>> clf
@@ -128,18 +127,45 @@ SoilClf(symbol='A-6(4)', description='Clayey soils')
128
127
 
129
128
  ```
130
129
 
130
+ Check out more examples
131
+ [here](https://docs.geolysis.io/en/latest/user_guide/getting_started.html#quick-start)
132
+
131
133
  ## Features
132
134
 
133
- | | |
134
- |----------------------------------------------|---------------------------------------|
135
- | **Soil Classification** | AASHTO Classification System |
136
- | | Unified Soil Classification System |
137
- | **Standard Penetration Test (SPT) Analysis** | SPT Energy Correction |
138
- | | SPT Overburden Pressure Correction |
139
- | | Dilatancy Correction |
140
- | | SPT N-Design Calculation |
141
- | **Bearing Capacity Estimation** | Allowable Bearing Capacity Estimation |
142
- | | Ultimate Bearing Capacity Estimation |
135
+ <table>
136
+ <tr>
137
+ <td><strong>Soil Classification</strong></td>
138
+ <td>AASHTO Classification System</td>
139
+ </tr>
140
+ <tr>
141
+ <td></td>
142
+ <td>Unified Soil Classification System</td>
143
+ </tr>
144
+ <tr>
145
+ <td><strong>Standard Penetration Test (SPT) Analysis</strong></td>
146
+ <td>SPT Energy Correction</td>
147
+ </tr>
148
+ <tr>
149
+ <td></td>
150
+ <td>SPT Overburden Pressure Correction</td>
151
+ </tr>
152
+ <tr>
153
+ <td></td>
154
+ <td>Dilatancy Correction</td>
155
+ </tr>
156
+ <tr>
157
+ <td></td>
158
+ <td>SPT N-Design Calculation</td>
159
+ </tr>
160
+ <tr>
161
+ <td><strong>Bearing Capacity Estimation</strong></td>
162
+ <td>Allowable Bearing Capacity Estimation</td>
163
+ </tr>
164
+ <tr>
165
+ <td></td>
166
+ <td>Ultimate Bearing Capacity Estimation</td>
167
+ </tr>
168
+ </table>
143
169
 
144
170
  ## Documentation
145
171
 
@@ -0,0 +1,5 @@
1
+ from . import foundation, soil_classifier, spt
2
+
3
+ __version__ = "0.4.5"
4
+
5
+ __all__ = ["foundation", "soil_classifier", "spt"]
File without changes
@@ -0,0 +1,146 @@
1
+ """ Allowable bearing capacity package for cohesionless soils.
2
+
3
+ Enums
4
+ =====
5
+
6
+ .. autosummary::
7
+ :toctree: _autosummary
8
+ :nosignatures:
9
+
10
+ ABCType
11
+
12
+ Functions
13
+ =========
14
+
15
+ .. autosummary::
16
+ :toctree: _autosummary
17
+
18
+ create_allowable_bearing_capacity
19
+ """
20
+
21
+ import enum
22
+ from typing import Optional
23
+
24
+ from geolysis.foundation import FoundationType, Shape, create_foundation
25
+ from geolysis.utils import enum_repr, inf
26
+
27
+ from ._core import AllowableBearingCapacity
28
+ from .bowles_abc import BowlesABC4MatFoundation, BowlesABC4PadFoundation
29
+ from .meyerhof_abc import MeyerhofABC4MatFoundation, MeyerhofABC4PadFoundation
30
+ from .terzaghi_abc import TerzaghiABC4MatFoundation, TerzaghiABC4PadFoundation
31
+
32
+
33
+ @enum_repr
34
+ class ABCType(enum.StrEnum):
35
+ """Enumeration of available allowable bearing capacity types."""
36
+ BOWLES = enum.auto()
37
+ MEYERHOF = enum.auto()
38
+ TERZAGHI = enum.auto()
39
+
40
+
41
+ def create_allowable_bearing_capacity(corrected_spt_n_value: float,
42
+ tol_settlement: float,
43
+ depth: float,
44
+ width: float,
45
+ length: Optional[float] = None,
46
+ eccentricity: float = 0.0,
47
+ ground_water_level: float = inf,
48
+ shape: Shape | str = Shape.SQUARE,
49
+ foundation_type: FoundationType | str =
50
+ FoundationType.PAD,
51
+ abc_type: Optional[
52
+ ABCType | str] = None,
53
+ ) -> AllowableBearingCapacity:
54
+ """ A factory function that encapsulate the creation of allowable bearing
55
+ capacities.
56
+
57
+ :param corrected_spt_n_value: The corrected SPT N-value.
58
+ :type corrected_spt_n_value: float
59
+
60
+ :param tol_settlement: Tolerable settlement of foundation (mm).
61
+ :type tol_settlement: float
62
+
63
+ :param depth: Depth of foundation (m).
64
+ :type depth: float
65
+
66
+ :param width: Width of foundation footing (m).
67
+ :type width: float
68
+
69
+ :param length: Length of foundation footing (m).
70
+ :type length: float, optional
71
+
72
+ :param eccentricity: The deviation of the foundation load from the center
73
+ of gravity of the foundation footing (m), defaults to
74
+ 0.0. This means that the foundation load aligns with
75
+ the center of gravity of the foundation footing.
76
+ :type eccentricity: float, optional
77
+
78
+ :param ground_water_level: Depth of water below ground level (m).
79
+ :type ground_water_level: float, optional
80
+
81
+ :param shape: Shape of foundation footing, defaults to
82
+ :attr:`~geolysis.foundation.Shape.SQUARE`.
83
+ :type shape: str, optional
84
+
85
+ :param foundation_type: Type of foundation, defaults to "pad".
86
+ :type foundation_type: FoundationType | str, optional
87
+
88
+ :param abc_type: Type of allowable bearing capacity calculation to apply.
89
+ Available values can be found in :class:`ABCType`,
90
+ defaults to None.
91
+ :type abc_type: ABCType | str, optional
92
+
93
+ :raises ValueError: Raised if ``abc_type`` or ``foundation_type`` is not
94
+ supported.
95
+ :raises ValueError: Raised when ``length`` is not provided for a rectangular
96
+ footing.
97
+ :raises ValueError: Raised if an invalid footing ``shape`` is provided.
98
+ """
99
+ msg = (f"{abc_type=} is not supported, Supported "
100
+ f"types are: {list(ABCType)}")
101
+
102
+ if abc_type is None:
103
+ raise ValueError(msg)
104
+
105
+ try:
106
+ abc_type = ABCType(str(abc_type).casefold())
107
+ except ValueError as e:
108
+ raise ValueError(msg) from e
109
+
110
+ msg = (f"{foundation_type=} is not supported, Supported "
111
+ f"types are: {list(FoundationType)}")
112
+
113
+ try:
114
+ foundation_type = FoundationType(str(foundation_type).casefold())
115
+ except ValueError as e:
116
+ raise ValueError(msg) from e
117
+
118
+ # exception from create_foundation will automaatically propagate
119
+ # no need to catch and handle it.
120
+ fnd_size = create_foundation(depth=depth,
121
+ width=width,
122
+ length=length,
123
+ eccentricity=eccentricity,
124
+ ground_water_level=ground_water_level,
125
+ foundation_type=foundation_type,
126
+ shape=shape)
127
+ abc_classes = {
128
+ ABCType.BOWLES: {
129
+ FoundationType.PAD: BowlesABC4PadFoundation,
130
+ FoundationType.MAT: BowlesABC4MatFoundation,
131
+ },
132
+ ABCType.MEYERHOF: {
133
+ FoundationType.PAD: MeyerhofABC4PadFoundation,
134
+ FoundationType.MAT: MeyerhofABC4MatFoundation,
135
+ },
136
+ ABCType.TERZAGHI: {
137
+ FoundationType.PAD: TerzaghiABC4PadFoundation,
138
+ FoundationType.MAT: TerzaghiABC4MatFoundation,
139
+ }
140
+ }
141
+
142
+ abc_class = abc_classes[abc_type][fnd_size.foundation_type]
143
+ abc = abc_class(corrected_spt_n_value=corrected_spt_n_value,
144
+ tol_settlement=tol_settlement,
145
+ foundation_size=fnd_size)
146
+ return abc
@@ -0,0 +1,55 @@
1
+ from abc import ABC, abstractmethod
2
+
3
+ from geolysis.foundation import FoundationSize
4
+ from geolysis.utils import validators
5
+
6
+
7
+ class SettlementError(ValueError):
8
+ """Raised when tolerable settlement is greater than the maximum
9
+ allowable settlement.
10
+ """
11
+
12
+
13
+ class AllowableBearingCapacity(ABC):
14
+ #: Maximum tolerable foundation settlement (mm).
15
+ MAX_TOL_SETTLEMENT = 25.4
16
+
17
+ def __init__(self, corrected_spt_n_value: float,
18
+ tol_settlement: float,
19
+ foundation_size: FoundationSize) -> None:
20
+ self.corrected_spt_n_value = corrected_spt_n_value
21
+ self.tol_settlement = tol_settlement
22
+ self.foundation_size = foundation_size
23
+
24
+ @property
25
+ def corrected_spt_n_value(self) -> float:
26
+ """Statistical average of corrected SPT N-value."""
27
+ return self._corrected_spt_n_value
28
+
29
+ @corrected_spt_n_value.setter
30
+ @validators.ge(0.0)
31
+ def corrected_spt_n_value(self, val: float) -> None:
32
+ self._corrected_spt_n_value = val
33
+
34
+ @property
35
+ def tol_settlement(self) -> float:
36
+ """Tolerable settlement foundation (mm)."""
37
+ return self._tol_settlement
38
+
39
+ @tol_settlement.setter
40
+ @validators.le(25.4, exc_type=SettlementError)
41
+ def tol_settlement(self, tol_settlement: float) -> None:
42
+ self._tol_settlement = tol_settlement
43
+
44
+ def _sr(self) -> float:
45
+ """Calculate the settlement ratio."""
46
+ return self.tol_settlement / self.MAX_TOL_SETTLEMENT
47
+
48
+ def _fd(self) -> float:
49
+ """Calculate the depth factor."""
50
+ depth = self.foundation_size.depth
51
+ width = self.foundation_size.width
52
+ return min(1.0 + 0.33 * depth / width, 1.33)
53
+
54
+ @abstractmethod
55
+ def bearing_capacity(self): ...
@@ -0,0 +1,107 @@
1
+ """ Bowles allowable bearing capacity.
2
+
3
+ Classes
4
+ =======
5
+
6
+ .. autosummary::
7
+ :toctree: _autosummary
8
+
9
+ BowlesABC4PadFoundation
10
+ BowlesABC4MatFoundation
11
+ """
12
+ from geolysis.foundation import FoundationSize
13
+ from geolysis.utils import round_
14
+
15
+ from ._core import AllowableBearingCapacity
16
+
17
+
18
+ class BowlesABC4PadFoundation(AllowableBearingCapacity):
19
+ r"""Allowable bearing capacity for pad foundation on cohesionless soils
20
+ according to ``Bowles (1997)``.
21
+
22
+ :Equation:
23
+
24
+ .. math::
25
+
26
+ q_a(kPa) &= 19.16(N_1)_{55} f_d\left(\dfrac{S}{25.4}\right),
27
+ \ B \ \le \ 1.2m
28
+
29
+ q_a(kPa) &= 11.98(N_1)_{55}\left(\dfrac{3.28B + 1}{3.28B} \right)^2
30
+ f_d \left(\dfrac{S}{25.4}\right), \ B \ \gt 1.2m
31
+
32
+ f_d &= 1 + 0.33 \cdot \frac{D_f}{B} \le 1.33
33
+
34
+ =================== ====================================== ===========
35
+ Symbol Description Unit
36
+ =================== ====================================== ===========
37
+ :math:`q_a` Allowable bearing capacity :math:`kPa`
38
+ :math:`(N_1)_{55}` Corrected SPT N-value —
39
+ :math:`f_d` Depth factor —
40
+ :math:`S` Tolerable settlement :math:`mm`
41
+ :math:`B` Width of foundation footing :math:`m`
42
+ :math:`D_f` Depth of foundation footing :math:`m`
43
+ =================== ====================================== ===========
44
+ """
45
+
46
+ def __init__(self, corrected_spt_n_value: float,
47
+ tol_settlement: float,
48
+ foundation_size: FoundationSize) -> None:
49
+ """
50
+ :param corrected_spt_n_value: Statistical average of corrected SPT
51
+ N-value (55% energy with overburden
52
+ pressure correction) within the foundation
53
+ influence zone i.e ``0.5B`` to ``2B``.
54
+ :type corrected_spt_n_value: float
55
+
56
+ :param tol_settlement: Tolerable settlement of foundation (mm).
57
+ :type tol_settlement: float
58
+
59
+ :param foundation_size: Size of the foundation.
60
+ :type foundation_size: FoundationSize
61
+ """
62
+ super().__init__(corrected_spt_n_value=corrected_spt_n_value,
63
+ tol_settlement=tol_settlement,
64
+ foundation_size=foundation_size)
65
+
66
+ @round_
67
+ def bearing_capacity(self) -> float:
68
+ """Calculate the allowable bearing capacity of the pad foundation."""
69
+ n_corr = self.corrected_spt_n_value
70
+ width = self.foundation_size.width
71
+
72
+ if width <= 1.2:
73
+ return 19.16 * n_corr * self._fd() * self._sr()
74
+
75
+ return (11.98 * n_corr * ((3.28 * width + 1) / (3.28 * width)) ** 2
76
+ * self._fd() * self._sr())
77
+
78
+
79
+ class BowlesABC4MatFoundation(BowlesABC4PadFoundation):
80
+ r"""Allowable bearing capacity for mat foundation on cohesionless soils
81
+ according to ``Bowles (1997)``.
82
+
83
+ :Equation:
84
+
85
+ .. math::
86
+
87
+ q_a(kPa) &= 11.98(N_1)_{55}f_d\left(\dfrac{S}{25.4}\right)
88
+
89
+ f_d &= 1 + 0.33 \cdot \frac{D_f}{B} \le 1.33
90
+
91
+ =================== ====================================== ===========
92
+ Symbol Description Unit
93
+ =================== ====================================== ===========
94
+ :math:`q_a` Allowable bearing capacity :math:`kPa`
95
+ :math:`(N_1)_{55}` Corrected SPT N-value —
96
+ :math:`f_d` Depth factor —
97
+ :math:`S` Tolerable settlement :math:`mm`
98
+ :math:`B` Width of foundation footing :math:`m`
99
+ :math:`D_f` Depth of foundation footing :math:`m`
100
+ =================== ====================================== ===========
101
+ """
102
+
103
+ @round_
104
+ def bearing_capacity(self) -> float:
105
+ """Calculate the allowable bearing capacity of the mat foundation."""
106
+ n_corr = self.corrected_spt_n_value
107
+ return 11.98 * n_corr * self._fd() * self._sr()
@@ -0,0 +1,107 @@
1
+ """ Meyerhof allowable bearing capacity.
2
+
3
+ Classes
4
+ =======
5
+
6
+ .. autosummary::
7
+ :toctree: _autosummary
8
+
9
+ MeyerhofABC4PadFoundation
10
+ MeyerhofABC4MatFoundation
11
+ """
12
+ from geolysis.foundation import FoundationSize
13
+ from geolysis.utils import round_
14
+
15
+ from ._core import AllowableBearingCapacity
16
+
17
+
18
+ class MeyerhofABC4PadFoundation(AllowableBearingCapacity):
19
+ r"""Allowable bearing capacity for pad foundation on cohesionless soils
20
+ according to ``Meyerhof (1956)``.
21
+
22
+ :Equation:
23
+
24
+ .. math::
25
+
26
+ q_a(kPa) &= 12N f_d\left(\dfrac{S}{25.4}\right), \ B \ \le 1.2m
27
+
28
+ q_a(kPa) &= 8N\left(\dfrac{3.28B + 1}{3.28B} \right)^2 f_d\left(
29
+ \dfrac{S}{25.4}\right), \ B \ \gt 1.2m
30
+
31
+ f_d &= 1 + 0.33 \cdot \frac{D_f}{B} \le 1.33
32
+
33
+ =================== ====================================== ===========
34
+ Symbol Description Unit
35
+ =================== ====================================== ===========
36
+ :math:`q_a` Allowable bearing capacity :math:`kPa`
37
+ :math:`N` Corrected SPT N-value —
38
+ :math:`f_d` Depth factor —
39
+ :math:`S` Tolerable settlement :math:`mm`
40
+ :math:`B` Width of foundation footing :math:`m`
41
+ :math:`D_f` Depth of foundation footing :math:`m`
42
+ =================== ====================================== ===========
43
+ """
44
+
45
+ def __init__(self, corrected_spt_n_value: float,
46
+ tol_settlement: float,
47
+ foundation_size: FoundationSize):
48
+ """
49
+ :param corrected_spt_n_value: Average uncorrected SPT N-value (60%
50
+ energy with dilatancy (water) correction
51
+ if applicable) within the foundation
52
+ influence zone i.e :math:`D_f` to
53
+ :math:`D_f + 2B`.
54
+ :type corrected_spt_n_value: float
55
+
56
+ :param tol_settlement: Tolerable settlement of foundation (mm).
57
+ :type tol_settlement: float
58
+
59
+ :param foundation_size: Size of the foundation.
60
+ :type foundation_size: FoundationSize
61
+ """
62
+ super().__init__(corrected_spt_n_value=corrected_spt_n_value,
63
+ tol_settlement=tol_settlement,
64
+ foundation_size=foundation_size)
65
+
66
+ @round_
67
+ def bearing_capacity(self):
68
+ """Calculates the allowable bearing capacity of the pad foundation."""
69
+ n_corr = self.corrected_spt_n_value
70
+ width = self.foundation_size.width
71
+
72
+ if width <= 1.2:
73
+ return 12 * n_corr * self._fd() * self._sr()
74
+
75
+ return (8 * n_corr * ((3.28 * width + 1) / (3.28 * width)) ** 2
76
+ * self._fd() * self._sr())
77
+
78
+
79
+ class MeyerhofABC4MatFoundation(MeyerhofABC4PadFoundation):
80
+ r"""Allowable bearing capacity for mat foundation on cohesionless soils
81
+ according to ``Meyerhof (1956)``.
82
+
83
+ :Equation:
84
+
85
+ .. math::
86
+
87
+ q_a(kPa) &= 8 N f_d\left(\dfrac{S}{25.4}\right)
88
+
89
+ f_d &= 1 + 0.33 \cdot \frac{D_f}{B} \le 1.33
90
+
91
+ =================== ====================================== ===========
92
+ Symbol Description Unit
93
+ =================== ====================================== ===========
94
+ :math:`q_a` Allowable bearing capacity :math:`kPa`
95
+ :math:`N` Corrected SPT N-value —
96
+ :math:`f_d` Depth factor —
97
+ :math:`S` Tolerable settlement :math:`mm`
98
+ :math:`B` Width of foundation footing :math:`m`
99
+ :math:`D_f` Depth of foundation footing :math:`m`
100
+ =================== ====================================== ===========
101
+ """
102
+
103
+ @round_
104
+ def bearing_capacity(self):
105
+ """Calculate the allowable bearing capacity of the mat foundation."""
106
+ n_corr = self.corrected_spt_n_value
107
+ return 8 * n_corr * self._fd() * self._sr()