geolysis 0.4.3__tar.gz → 0.4.4__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 (34) hide show
  1. {geolysis-0.4.3 → geolysis-0.4.4}/PKG-INFO +38 -11
  2. {geolysis-0.4.3 → geolysis-0.4.4}/README.md +37 -10
  3. geolysis-0.4.4/geolysis/__init__.py +5 -0
  4. geolysis-0.4.4/geolysis/bearing_capacity/__init__.py +0 -0
  5. geolysis-0.4.4/geolysis/bearing_capacity/abc/__init__.py +0 -0
  6. geolysis-0.4.4/geolysis/bearing_capacity/abc/cohl/__init__.py +206 -0
  7. geolysis-0.4.4/geolysis/bearing_capacity/abc/cohl/bowles_abc.py +107 -0
  8. geolysis-0.4.4/geolysis/bearing_capacity/abc/cohl/meyerhof_abc.py +107 -0
  9. geolysis-0.4.4/geolysis/bearing_capacity/abc/cohl/terzaghi_abc.py +142 -0
  10. geolysis-0.4.4/geolysis/bearing_capacity/ubc/__init__.py +337 -0
  11. geolysis-0.4.4/geolysis/bearing_capacity/ubc/hansen_ubc.py +296 -0
  12. geolysis-0.4.4/geolysis/bearing_capacity/ubc/terzaghi_ubc.py +258 -0
  13. geolysis-0.4.4/geolysis/bearing_capacity/ubc/vesic_ubc.py +302 -0
  14. {geolysis-0.4.3 → geolysis-0.4.4}/geolysis/foundation.py +1 -1
  15. {geolysis-0.4.3 → geolysis-0.4.4}/geolysis/soil_classifier.py +2 -3
  16. {geolysis-0.4.3 → geolysis-0.4.4}/geolysis/spt.py +1 -2
  17. geolysis-0.4.4/geolysis/utils/__init__.py +100 -0
  18. geolysis-0.4.4/geolysis/utils/validators.py +80 -0
  19. {geolysis-0.4.3 → geolysis-0.4.4}/geolysis.egg-info/PKG-INFO +38 -11
  20. geolysis-0.4.4/geolysis.egg-info/SOURCES.txt +30 -0
  21. {geolysis-0.4.3 → geolysis-0.4.4}/pyproject.toml +3 -2
  22. geolysis-0.4.3/geolysis/__init__.py +0 -1
  23. geolysis-0.4.3/geolysis.egg-info/SOURCES.txt +0 -18
  24. {geolysis-0.4.3 → geolysis-0.4.4}/LICENSE.txt +0 -0
  25. {geolysis-0.4.3 → geolysis-0.4.4}/geolysis.egg-info/dependency_links.txt +0 -0
  26. {geolysis-0.4.3 → geolysis-0.4.4}/geolysis.egg-info/requires.txt +0 -0
  27. {geolysis-0.4.3 → geolysis-0.4.4}/geolysis.egg-info/top_level.txt +0 -0
  28. {geolysis-0.4.3 → geolysis-0.4.4}/setup.cfg +0 -0
  29. {geolysis-0.4.3 → geolysis-0.4.4}/setup.py +0 -0
  30. {geolysis-0.4.3 → geolysis-0.4.4}/tests/test_foundation.py +0 -0
  31. {geolysis-0.4.3 → geolysis-0.4.4}/tests/test_soil_classifier.py +0 -0
  32. {geolysis-0.4.3 → geolysis-0.4.4}/tests/test_spt.py +0 -0
  33. {geolysis-0.4.3 → geolysis-0.4.4}/tests/test_utils.py +0 -0
  34. {geolysis-0.4.3 → geolysis-0.4.4}/tests/test_validators.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: geolysis
3
- Version: 0.4.3
3
+ Version: 0.4.4
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
@@ -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
 
@@ -128,18 +128,45 @@ SoilClf(symbol='A-6(4)', description='Clayey soils')
128
128
 
129
129
  ```
130
130
 
131
+ Check out more examples
132
+ [here](https://docs.geolysis.io/en/latest/user_guide/getting_started.html#quick-start)
133
+
131
134
  ## Features
132
135
 
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 |
136
+ <table>
137
+ <tr>
138
+ <td><strong>Soil Classification</strong></td>
139
+ <td>AASHTO Classification System</td>
140
+ </tr>
141
+ <tr>
142
+ <td></td>
143
+ <td>Unified Soil Classification System</td>
144
+ </tr>
145
+ <tr>
146
+ <td><strong>Standard Penetration Test (SPT) Analysis</strong></td>
147
+ <td>SPT Energy Correction</td>
148
+ </tr>
149
+ <tr>
150
+ <td></td>
151
+ <td>SPT Overburden Pressure Correction</td>
152
+ </tr>
153
+ <tr>
154
+ <td></td>
155
+ <td>Dilatancy Correction</td>
156
+ </tr>
157
+ <tr>
158
+ <td></td>
159
+ <td>SPT N-Design Calculation</td>
160
+ </tr>
161
+ <tr>
162
+ <td><strong>Bearing Capacity Estimation</strong></td>
163
+ <td>Allowable Bearing Capacity Estimation</td>
164
+ </tr>
165
+ <tr>
166
+ <td></td>
167
+ <td>Ultimate Bearing Capacity Estimation</td>
168
+ </tr>
169
+ </table>
143
170
 
144
171
  ## Documentation
145
172
 
@@ -0,0 +1,5 @@
1
+ from . import foundation, soil_classifier, spt
2
+
3
+ __version__ = "0.4.4"
4
+
5
+ __all__ = ["foundation", "soil_classifier", "spt"]
File without changes
@@ -0,0 +1,206 @@
1
+ """ Allowable bearing capacity package for cohesionless soils.
2
+
3
+ Exceptions
4
+ ==========
5
+
6
+ .. autosummary::
7
+ :toctree: _autosummary
8
+
9
+ SettlementError
10
+
11
+ Enums
12
+ =====
13
+
14
+ .. autosummary::
15
+ :toctree: _autosummary
16
+ :nosignatures:
17
+
18
+ ABC_TYPE
19
+
20
+ Functions
21
+ =========
22
+
23
+ .. autosummary::
24
+ :toctree: _autosummary
25
+
26
+ create_allowable_bearing_capacity
27
+ """
28
+ import enum
29
+ from abc import ABC, abstractmethod
30
+ from typing import Optional
31
+
32
+ from geolysis.foundation import (FoundationSize,
33
+ Shape,
34
+ FoundationType,
35
+ create_foundation)
36
+ from geolysis.utils import inf, enum_repr, validators
37
+
38
+
39
+ class SettlementError(ValueError):
40
+ """Raised when tolerable settlement is greater than the maximum
41
+ allowable settlement.
42
+ """
43
+
44
+
45
+ class AllowableBearingCapacity(ABC):
46
+ #: Maximum tolerable foundation settlement (mm).
47
+ MAX_TOL_SETTLEMENT = 25.4
48
+
49
+ def __init__(self, corrected_spt_n_value: float,
50
+ tol_settlement: float,
51
+ foundation_size: FoundationSize) -> None:
52
+ self.corrected_spt_n_value = corrected_spt_n_value
53
+ self.tol_settlement = tol_settlement
54
+ self.foundation_size = foundation_size
55
+
56
+ @property
57
+ def corrected_spt_n_value(self) -> float:
58
+ return self._corrected_spt_n_value
59
+
60
+ @corrected_spt_n_value.setter
61
+ @validators.ge(0.0)
62
+ def corrected_spt_n_value(self, val: float) -> None:
63
+ self._corrected_spt_n_value = val
64
+
65
+ @property
66
+ def tol_settlement(self) -> float:
67
+ return self._tol_settlement
68
+
69
+ @tol_settlement.setter
70
+ @validators.le(25.4, exc_type=SettlementError)
71
+ def tol_settlement(self, tol_settlement: float) -> None:
72
+ self._tol_settlement = tol_settlement
73
+
74
+ def _sr(self) -> float:
75
+ """Calculate the settlement ratio."""
76
+ return self.tol_settlement / self.MAX_TOL_SETTLEMENT
77
+
78
+ def _fd(self) -> float:
79
+ """Calculate the depth factor."""
80
+ depth = self.foundation_size.depth
81
+ width = self.foundation_size.width
82
+
83
+ return min(1.0 + 0.33 * depth / width, 1.33)
84
+
85
+ @abstractmethod
86
+ def bearing_capacity(self): ...
87
+
88
+
89
+ from . import bowles_abc, terzaghi_abc, meyerhof_abc
90
+
91
+ from .bowles_abc import BowlesABC4MatFoundation, BowlesABC4PadFoundation
92
+ from .meyerhof_abc import MeyerhofABC4MatFoundation, MeyerhofABC4PadFoundation
93
+ from .terzaghi_abc import TerzaghiABC4MatFoundation, TerzaghiABC4PadFoundation
94
+
95
+
96
+ @enum_repr
97
+ class ABC_TYPE(enum.StrEnum):
98
+ """Enumeration of available allowable bearing capacity types."""
99
+ BOWLES = enum.auto()
100
+ MEYERHOF = enum.auto()
101
+ TERZAGHI = enum.auto()
102
+
103
+
104
+ def create_allowable_bearing_capacity(corrected_spt_n_value: float,
105
+ tol_settlement: float,
106
+ depth: float,
107
+ width: float,
108
+ length: Optional[float] = None,
109
+ eccentricity: float = 0.0,
110
+ ground_water_level: float = inf,
111
+ shape: Shape | str = Shape.SQUARE,
112
+ foundation_type: FoundationType | str = \
113
+ FoundationType.PAD,
114
+ abc_type: Optional[
115
+ ABC_TYPE | str] = None,
116
+ ) -> AllowableBearingCapacity:
117
+ """ A factory function that encapsulate the creation of allowable bearing
118
+ capacities.
119
+
120
+ :param corrected_spt_n_value: The corrected SPT N-value.
121
+ :type corrected_spt_n_value: float
122
+
123
+ :param tol_settlement: Tolerable settlement of foundation (mm).
124
+ :type tol_settlement: float
125
+
126
+ :param depth: Depth of foundation (m).
127
+ :type depth: float
128
+
129
+ :param width: Width of foundation footing (m).
130
+ :type width: float
131
+
132
+ :param length: Length of foundation footing (m).
133
+ :type length: float, optional
134
+
135
+ :param eccentricity: The deviation of the foundation load from the center
136
+ of gravity of the foundation footing, defaults to 0.0.
137
+ This means that the foundation load aligns with the
138
+ center of gravity of the foundation footing (m).
139
+ :type eccentricity: float, optional
140
+
141
+ :param ground_water_level: Depth of water below ground level (m).
142
+ :type ground_water_level: float
143
+
144
+ :param shape: Shape of foundation footing, defaults to "SQUARE".
145
+ :type shape: str, optional
146
+
147
+ :param foundation_type: Type of foundation, defaults to "pad".
148
+ :type foundation_type: FoundationType | str, optional
149
+
150
+ :param abc_type: Type of allowable bearing capacity calculation to apply.
151
+ Available values can be found in :class:`ABC_TYPE`,
152
+ defaults to None.
153
+ :type abc_type: ABC_TYPE | str
154
+
155
+ :raises ValueError: Raised if abc_type or foundation_type is not supported.
156
+ :raises ValueError: Raised when length is not provided for a rectangular
157
+ footing.
158
+ :raises ValueError: Raised if an invalid footing shape is provided.
159
+ """
160
+ msg = (f"{abc_type = } is not supported, Supported "
161
+ f"types are: {list(ABC_TYPE)}")
162
+
163
+ if abc_type is None:
164
+ raise ValueError(msg)
165
+
166
+ try:
167
+ abc_type = ABC_TYPE(str(abc_type).casefold())
168
+ except ValueError as e:
169
+ raise ValueError(msg) from e
170
+
171
+ msg = (f"{foundation_type = } is not supported, Supported "
172
+ f"types are: {list(FoundationType)}")
173
+
174
+ try:
175
+ foundation_type = FoundationType(str(foundation_type).casefold())
176
+ except ValueError as e:
177
+ raise ValueError(msg) from e
178
+
179
+ # exception from create_foundation will automaatically propagate
180
+ # no need to catch and handle it.
181
+ fnd_size = create_foundation(depth=depth,
182
+ width=width,
183
+ length=length,
184
+ eccentricity=eccentricity,
185
+ ground_water_level=ground_water_level,
186
+ shape=shape)
187
+ abc_classes = {
188
+ ABC_TYPE.BOWLES: {
189
+ FoundationType.PAD: BowlesABC4PadFoundation,
190
+ FoundationType.MAT: BowlesABC4MatFoundation,
191
+ },
192
+ ABC_TYPE.MEYERHOF: {
193
+ FoundationType.PAD: MeyerhofABC4PadFoundation,
194
+ FoundationType.MAT: MeyerhofABC4MatFoundation,
195
+ },
196
+ ABC_TYPE.TERZAGHI: {
197
+ FoundationType.PAD: TerzaghiABC4PadFoundation,
198
+ FoundationType.MAT: TerzaghiABC4MatFoundation,
199
+ }
200
+ }
201
+
202
+ abc_class = abc_classes[abc_type][foundation_type]
203
+ abc = abc_class(corrected_spt_n_value=corrected_spt_n_value,
204
+ tol_settlement=tol_settlement,
205
+ foundation_size=fnd_size)
206
+ return abc
@@ -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 . 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 . 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()