geolysis 0.11.0__tar.gz → 0.13.0__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 (35) hide show
  1. {geolysis-0.11.0 → geolysis-0.13.0}/PKG-INFO +47 -39
  2. {geolysis-0.11.0 → geolysis-0.13.0}/README.md +46 -38
  3. {geolysis-0.11.0 → geolysis-0.13.0}/geolysis/__init__.py +1 -1
  4. {geolysis-0.11.0 → geolysis-0.13.0}/geolysis/bearing_capacity/abc/_cohl/__init__.py +31 -43
  5. geolysis-0.13.0/geolysis/bearing_capacity/abc/_cohl/_core.py +96 -0
  6. {geolysis-0.11.0 → geolysis-0.13.0}/geolysis/bearing_capacity/abc/_cohl/bowles_abc.py +11 -11
  7. {geolysis-0.11.0 → geolysis-0.13.0}/geolysis/bearing_capacity/abc/_cohl/meyerhof_abc.py +11 -11
  8. {geolysis-0.11.0 → geolysis-0.13.0}/geolysis/bearing_capacity/abc/_cohl/terzaghi_abc.py +16 -16
  9. {geolysis-0.11.0 → geolysis-0.13.0}/geolysis/bearing_capacity/ubc/__init__.py +25 -28
  10. geolysis-0.13.0/geolysis/bearing_capacity/ubc/_core.py +281 -0
  11. {geolysis-0.11.0 → geolysis-0.13.0}/geolysis/bearing_capacity/ubc/_terzaghi_ubc.py +48 -65
  12. {geolysis-0.11.0 → geolysis-0.13.0}/geolysis/bearing_capacity/ubc/_vesic_ubc.py +90 -46
  13. {geolysis-0.11.0 → geolysis-0.13.0}/geolysis/foundation.py +104 -75
  14. {geolysis-0.11.0 → geolysis-0.13.0}/geolysis/soil_classifier.py +47 -50
  15. {geolysis-0.11.0 → geolysis-0.13.0}/geolysis/spt.py +87 -76
  16. geolysis-0.11.0/geolysis/utils.py → geolysis-0.13.0/geolysis/utils/__init__.py +15 -53
  17. geolysis-0.13.0/geolysis/utils/math.py +59 -0
  18. {geolysis-0.11.0 → geolysis-0.13.0}/geolysis.egg-info/PKG-INFO +47 -39
  19. {geolysis-0.11.0 → geolysis-0.13.0}/geolysis.egg-info/SOURCES.txt +2 -2
  20. {geolysis-0.11.0 → geolysis-0.13.0}/tests/test_docs.py +1 -1
  21. {geolysis-0.11.0 → geolysis-0.13.0}/tests/test_foundation.py +4 -7
  22. geolysis-0.11.0/geolysis/bearing_capacity/abc/_cohl/_core.py +0 -73
  23. geolysis-0.11.0/geolysis/bearing_capacity/ubc/_core.py +0 -218
  24. geolysis-0.11.0/geolysis/bearing_capacity/ubc/_hansen_ubc.py +0 -188
  25. {geolysis-0.11.0 → geolysis-0.13.0}/LICENSE.txt +0 -0
  26. {geolysis-0.11.0 → geolysis-0.13.0}/geolysis/bearing_capacity/__init__.py +0 -0
  27. {geolysis-0.11.0 → geolysis-0.13.0}/geolysis/bearing_capacity/abc/__init__.py +0 -0
  28. {geolysis-0.11.0 → geolysis-0.13.0}/geolysis.egg-info/dependency_links.txt +0 -0
  29. {geolysis-0.11.0 → geolysis-0.13.0}/geolysis.egg-info/requires.txt +0 -0
  30. {geolysis-0.11.0 → geolysis-0.13.0}/geolysis.egg-info/top_level.txt +0 -0
  31. {geolysis-0.11.0 → geolysis-0.13.0}/pyproject.toml +0 -0
  32. {geolysis-0.11.0 → geolysis-0.13.0}/setup.cfg +0 -0
  33. {geolysis-0.11.0 → geolysis-0.13.0}/setup.py +0 -0
  34. {geolysis-0.11.0 → geolysis-0.13.0}/tests/test_soil_classifier.py +0 -0
  35. {geolysis-0.11.0 → geolysis-0.13.0}/tests/test_spt.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: geolysis
3
- Version: 0.11.0
3
+ Version: 0.13.0
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
@@ -57,7 +57,8 @@ The `geolysis` python package is among three other projects, `geolysis.excel`,
57
57
  `geolysis.gui`, and `geolysis.ai`. More details about these projects are
58
58
  provided [here](https://github.com/geolysis-dev).
59
59
 
60
- `geolysis` has only one project dependency which is [func-validator](https://github.com/patrickboateng/func-validator/)
60
+ `geolysis` has only one project dependency which
61
+ is [func-validator](https://github.com/patrickboateng/func-validator/)
61
62
  for validating `function` (and `method`) arguments.
62
63
 
63
64
  The rest of this **README** provides an overview of the `geolysis` python
@@ -83,58 +84,64 @@ $ pip install geolysis
83
84
 
84
85
  ## API Reference
85
86
 
86
- - [Python API](https://docs.geolysis.io/en/latest/reference/)
87
- - [geolysis.bearing_capacity.abc](https://docs.geolysis.io/en/latest/reference/allowable_bearing_capacity/) - _Allowable bearing capacity
87
+ - [Python API](https://docs.geolysis.io/en/latest/reference/)
88
+ - [geolysis.bearing_capacity.abc](https://docs.geolysis.io/en/latest/reference/allowable_bearing_capacity/) -
89
+ _Allowable bearing capacity
88
90
  estimation_
89
- - [geolysis.bearing_capacity.ubc](https://docs.geolysis.io/en/latest/reference/ultimate_bearing_capacity/) - _Ultimate bearing capacity
91
+ - [geolysis.bearing_capacity.ubc](https://docs.geolysis.io/en/latest/reference/ultimate_bearing_capacity/) -
92
+ _Ultimate bearing capacity
90
93
  estimation_
91
- - [geolysis.foundation](https://docs.geolysis.io/en/latest/reference/foundation/) - _Foundation Representation_
92
- - [geolysis.soil_classifier](https://docs.geolysis.io/en/latest/reference/soil_classifier/) - _Soil classification_
93
- - [geolysis.spt](https://docs.geolysis.io/en/latest/reference/spt/) - _Standard Penetration Test (SPT) Analysis_
94
- - [geolysis.utils](https://docs.geolysis.io/en/latest/reference/utils/) - _Utilities_
95
-
94
+ - [geolysis.foundation](https://docs.geolysis.io/en/latest/reference/foundation/) -
95
+ _Foundation Representation_
96
+ - [geolysis.soil_classifier](https://docs.geolysis.io/en/latest/reference/soil_classifier/) -
97
+ _Soil classification_
98
+ - [geolysis.spt](https://docs.geolysis.io/en/latest/reference/spt/) -
99
+ _Standard Penetration Test (SPT) Analysis_
100
+ - [geolysis.utils](https://docs.geolysis.io/en/latest/reference/utils/) -
101
+ _Utilities_
96
102
 
97
103
  ## Imports
98
104
 
99
- - **Bearing Capacity**
100
-
101
- - **Allowable Bearing Capacity (ABC)**
102
-
103
- ```python
104
- from geolysis.bearing_capacity.abc import create_abc_4_cohesionless_soils
105
- ```
106
-
107
- - **Ultimate Bearing Capacity (UBC)**
108
-
109
- ```python
110
- from geolysis.bearing_capacity.ubc import create_ubc_4_all_soil_types
111
- ```
112
-
113
- - **Foundation**
114
-
115
- ```python
116
- from geolysis.foundation import create_foundation
117
- ```
105
+ ### Bearing Capacity
106
+
107
+ - **Allowable Bearing Capacity (ABC)**
108
+
109
+ ```python
110
+ from geolysis.bearing_capacity.abc import create_abc_4_cohesionless_soils
111
+ ```
118
112
 
113
+ - **Ultimate Bearing Capacity (UBC)**
119
114
 
120
- - **Soil Classification**
121
-
122
115
  ```python
123
- from geolysis.soil_classifier import create_uscs_classifier
124
- from geolysis.soil_classifier import create_aashto_classifier
116
+ from geolysis.bearing_capacity.ubc import create_ubc_4_all_soil_types
125
117
  ```
126
-
127
- - **Standard Penetration Test (SPT) Analysis**
128
-
118
+
119
+ ### Foundation
120
+
121
+ ```python
122
+ from geolysis.foundation import create_foundation
123
+ ```
124
+
125
+ ### Soil Classification
126
+
127
+ ```python
128
+ from geolysis.soil_classifier import create_uscs_classifier
129
+ from geolysis.soil_classifier import create_aashto_classifier
130
+ ```
131
+
132
+ ### Standard Penetration Test (SPT) Analysis
133
+
129
134
  ```python
130
135
  from geolysis.spt import DilatancyCorrection
131
136
  from geolysis.spt import EnergyCorrection
132
137
  from geolysis.spt import SPT
133
138
  from geolysis.spt import create_overburden_pressure_correction
134
139
  ```
135
-
140
+
136
141
  ## Project Structure
137
142
 
143
+ These are the main components of the project structure
144
+
138
145
  .
139
146
  ├── .github # GitHub Actions
140
147
  ├── docs # Documentation files
@@ -154,7 +161,7 @@ $ pip install geolysis
154
161
  >>> clf = aashto_clf.classify()
155
162
  >>> clf.symbol
156
163
  'A-6(4)'
157
- >>> clf.symbol_no_grp_idx
164
+ >>> clf.symbol_no_group_idx
158
165
  'A-6'
159
166
  >>> clf.group_index
160
167
  '4'
@@ -171,7 +178,8 @@ Check out the full [documentation](https://docs.geolysis.io/en/latest/).
171
178
 
172
179
  ## Contributing
173
180
 
174
- Check out the [contribution guidelines](https://docs.geolysis.io/en/latest/dev_guide/)
181
+ Check out
182
+ the [contribution guidelines](https://docs.geolysis.io/en/latest/dev_guide/)
175
183
 
176
184
  ## License
177
185
 
@@ -24,7 +24,8 @@ The `geolysis` python package is among three other projects, `geolysis.excel`,
24
24
  `geolysis.gui`, and `geolysis.ai`. More details about these projects are
25
25
  provided [here](https://github.com/geolysis-dev).
26
26
 
27
- `geolysis` has only one project dependency which is [func-validator](https://github.com/patrickboateng/func-validator/)
27
+ `geolysis` has only one project dependency which
28
+ is [func-validator](https://github.com/patrickboateng/func-validator/)
28
29
  for validating `function` (and `method`) arguments.
29
30
 
30
31
  The rest of this **README** provides an overview of the `geolysis` python
@@ -50,58 +51,64 @@ $ pip install geolysis
50
51
 
51
52
  ## API Reference
52
53
 
53
- - [Python API](https://docs.geolysis.io/en/latest/reference/)
54
- - [geolysis.bearing_capacity.abc](https://docs.geolysis.io/en/latest/reference/allowable_bearing_capacity/) - _Allowable bearing capacity
54
+ - [Python API](https://docs.geolysis.io/en/latest/reference/)
55
+ - [geolysis.bearing_capacity.abc](https://docs.geolysis.io/en/latest/reference/allowable_bearing_capacity/) -
56
+ _Allowable bearing capacity
55
57
  estimation_
56
- - [geolysis.bearing_capacity.ubc](https://docs.geolysis.io/en/latest/reference/ultimate_bearing_capacity/) - _Ultimate bearing capacity
58
+ - [geolysis.bearing_capacity.ubc](https://docs.geolysis.io/en/latest/reference/ultimate_bearing_capacity/) -
59
+ _Ultimate bearing capacity
57
60
  estimation_
58
- - [geolysis.foundation](https://docs.geolysis.io/en/latest/reference/foundation/) - _Foundation Representation_
59
- - [geolysis.soil_classifier](https://docs.geolysis.io/en/latest/reference/soil_classifier/) - _Soil classification_
60
- - [geolysis.spt](https://docs.geolysis.io/en/latest/reference/spt/) - _Standard Penetration Test (SPT) Analysis_
61
- - [geolysis.utils](https://docs.geolysis.io/en/latest/reference/utils/) - _Utilities_
62
-
61
+ - [geolysis.foundation](https://docs.geolysis.io/en/latest/reference/foundation/) -
62
+ _Foundation Representation_
63
+ - [geolysis.soil_classifier](https://docs.geolysis.io/en/latest/reference/soil_classifier/) -
64
+ _Soil classification_
65
+ - [geolysis.spt](https://docs.geolysis.io/en/latest/reference/spt/) -
66
+ _Standard Penetration Test (SPT) Analysis_
67
+ - [geolysis.utils](https://docs.geolysis.io/en/latest/reference/utils/) -
68
+ _Utilities_
63
69
 
64
70
  ## Imports
65
71
 
66
- - **Bearing Capacity**
67
-
68
- - **Allowable Bearing Capacity (ABC)**
69
-
70
- ```python
71
- from geolysis.bearing_capacity.abc import create_abc_4_cohesionless_soils
72
- ```
73
-
74
- - **Ultimate Bearing Capacity (UBC)**
75
-
76
- ```python
77
- from geolysis.bearing_capacity.ubc import create_ubc_4_all_soil_types
78
- ```
79
-
80
- - **Foundation**
81
-
82
- ```python
83
- from geolysis.foundation import create_foundation
84
- ```
72
+ ### Bearing Capacity
73
+
74
+ - **Allowable Bearing Capacity (ABC)**
75
+
76
+ ```python
77
+ from geolysis.bearing_capacity.abc import create_abc_4_cohesionless_soils
78
+ ```
85
79
 
80
+ - **Ultimate Bearing Capacity (UBC)**
86
81
 
87
- - **Soil Classification**
88
-
89
82
  ```python
90
- from geolysis.soil_classifier import create_uscs_classifier
91
- from geolysis.soil_classifier import create_aashto_classifier
83
+ from geolysis.bearing_capacity.ubc import create_ubc_4_all_soil_types
92
84
  ```
93
-
94
- - **Standard Penetration Test (SPT) Analysis**
95
-
85
+
86
+ ### Foundation
87
+
88
+ ```python
89
+ from geolysis.foundation import create_foundation
90
+ ```
91
+
92
+ ### Soil Classification
93
+
94
+ ```python
95
+ from geolysis.soil_classifier import create_uscs_classifier
96
+ from geolysis.soil_classifier import create_aashto_classifier
97
+ ```
98
+
99
+ ### Standard Penetration Test (SPT) Analysis
100
+
96
101
  ```python
97
102
  from geolysis.spt import DilatancyCorrection
98
103
  from geolysis.spt import EnergyCorrection
99
104
  from geolysis.spt import SPT
100
105
  from geolysis.spt import create_overburden_pressure_correction
101
106
  ```
102
-
107
+
103
108
  ## Project Structure
104
109
 
110
+ These are the main components of the project structure
111
+
105
112
  .
106
113
  ├── .github # GitHub Actions
107
114
  ├── docs # Documentation files
@@ -121,7 +128,7 @@ $ pip install geolysis
121
128
  >>> clf = aashto_clf.classify()
122
129
  >>> clf.symbol
123
130
  'A-6(4)'
124
- >>> clf.symbol_no_grp_idx
131
+ >>> clf.symbol_no_group_idx
125
132
  'A-6'
126
133
  >>> clf.group_index
127
134
  '4'
@@ -138,7 +145,8 @@ Check out the full [documentation](https://docs.geolysis.io/en/latest/).
138
145
 
139
146
  ## Contributing
140
147
 
141
- Check out the [contribution guidelines](https://docs.geolysis.io/en/latest/dev_guide/)
148
+ Check out
149
+ the [contribution guidelines](https://docs.geolysis.io/en/latest/dev_guide/)
142
150
 
143
151
  ## License
144
152
 
@@ -1,5 +1,5 @@
1
1
  from . import bearing_capacity, foundation, soil_classifier, spt
2
2
 
3
- __version__ = "0.11.0"
3
+ __version__ = "0.13.0"
4
4
 
5
5
  __all__ = ["foundation", "soil_classifier", "spt", "bearing_capacity"]
@@ -1,10 +1,11 @@
1
1
  import enum
2
2
  from typing import Optional, Annotated
3
3
 
4
- from func_validator import MustBeMemberOf, validate_func_args
4
+ from func_validator import MustBeMemberOf, validate_params
5
5
 
6
6
  from geolysis.foundation import FoundationType, Shape, create_foundation
7
7
  from geolysis.utils import AbstractStrEnum, inf
8
+
8
9
  from ._core import AllowableBearingCapacity
9
10
  from .bowles_abc import BowlesABC4MatFoundation, BowlesABC4PadFoundation
10
11
  from .meyerhof_abc import MeyerhofABC4MatFoundation, MeyerhofABC4PadFoundation
@@ -16,7 +17,7 @@ class ABCType(AbstractStrEnum):
16
17
 
17
18
  Each member represents a different method for determining
18
19
  the allowable bearing capacity of soil.
19
- """
20
+ """
20
21
 
21
22
  BOWLES = enum.auto()
22
23
  """Bowles's method for calculating allowable bearing capacity"""
@@ -28,20 +29,34 @@ class ABCType(AbstractStrEnum):
28
29
  """Terzaghi's method for calculating allowable bearing capacity"""
29
30
 
30
31
 
31
- @validate_func_args
32
+ abc_classes = {
33
+ ABCType.BOWLES: {
34
+ FoundationType.PAD: BowlesABC4PadFoundation,
35
+ FoundationType.MAT: BowlesABC4MatFoundation,
36
+ },
37
+ ABCType.MEYERHOF: {
38
+ FoundationType.PAD: MeyerhofABC4PadFoundation,
39
+ FoundationType.MAT: MeyerhofABC4MatFoundation,
40
+ },
41
+ ABCType.TERZAGHI: {
42
+ FoundationType.PAD: TerzaghiABC4PadFoundation,
43
+ FoundationType.MAT: TerzaghiABC4MatFoundation,
44
+ },
45
+ }
46
+
47
+
48
+ @validate_params
32
49
  def create_abc_4_cohesionless_soils(
33
- corrected_spt_n_value: float,
34
- tol_settlement: float,
35
- depth: float,
36
- width: float,
37
- length: Optional[float] = None,
38
- eccentricity: float = 0.0,
39
- ground_water_level: float = inf,
40
- shape: Shape | str = "square",
41
- foundation_type: Annotated[
42
- FoundationType | str, MustBeMemberOf(FoundationType)
43
- ] = "pad",
44
- abc_type: Annotated[ABCType | str, MustBeMemberOf(ABCType)] = "bowles",
50
+ corrected_spt_n_value: float,
51
+ tol_settlement: float,
52
+ depth: float,
53
+ width: float,
54
+ length: Optional[float] = None,
55
+ eccentricity: float = 0.0,
56
+ ground_water_level: float = inf,
57
+ shape: Shape | str = "square",
58
+ foundation_type: FoundationType | str = "pad",
59
+ abc_type: Annotated[ABCType | str, MustBeMemberOf(ABCType)] = "bowles",
45
60
  ) -> AllowableBearingCapacity:
46
61
  r"""A factory function that encapsulate the creation of allowable
47
62
  bearing capacities.
@@ -58,13 +73,6 @@ def create_abc_4_cohesionless_soils(
58
73
  :param foundation_type: Type of foundation.
59
74
  :param abc_type: Type of allowable bearing capacity calculation to
60
75
  apply.
61
-
62
- :raises ValidationError: Raised if `abc_type` or `foundation_type`
63
- is not supported.
64
- :raises ValidationError: Raised if an invalid footing `shape` is
65
- provided.
66
- :raises ValueError: Raised when `length` is not provided for a
67
- rectangular footing.
68
76
  """
69
77
  abc_type = ABCType(abc_type)
70
78
  foundation_type = FoundationType(foundation_type)
@@ -80,30 +88,10 @@ def create_abc_4_cohesionless_soils(
80
88
  foundation_type=foundation_type,
81
89
  shape=shape,
82
90
  )
91
+ abc_class = abc_classes[abc_type][foundation_type]
83
92
 
84
- abc_class = _get_allowable_bearing_capacity(abc_type,
85
- fnd_size.foundation_type)
86
93
  return abc_class(
87
94
  corrected_spt_n_value=corrected_spt_n_value,
88
95
  tol_settlement=tol_settlement,
89
96
  foundation_size=fnd_size,
90
97
  )
91
-
92
-
93
- def _get_allowable_bearing_capacity(abc_type: ABCType,
94
- foundation_type: FoundationType):
95
- abc_classes = {
96
- ABCType.BOWLES: {
97
- FoundationType.PAD: BowlesABC4PadFoundation,
98
- FoundationType.MAT: BowlesABC4MatFoundation,
99
- },
100
- ABCType.MEYERHOF: {
101
- FoundationType.PAD: MeyerhofABC4PadFoundation,
102
- FoundationType.MAT: MeyerhofABC4MatFoundation,
103
- },
104
- ABCType.TERZAGHI: {
105
- FoundationType.PAD: TerzaghiABC4PadFoundation,
106
- FoundationType.MAT: TerzaghiABC4MatFoundation,
107
- },
108
- }
109
- return abc_classes[abc_type][foundation_type]
@@ -0,0 +1,96 @@
1
+ from abc import ABC, abstractmethod
2
+ from dataclasses import dataclass
3
+ from typing import Annotated
4
+
5
+ from func_validator import (
6
+ validate_params,
7
+ MustBeNonNegative,
8
+ MustBeLessThanOrEqual,
9
+ )
10
+
11
+ from geolysis.foundation import Foundation
12
+ from geolysis.utils import round_, add_repr
13
+
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
23
+ class AllowableBearingCapacity(ABC):
24
+ #: Maximum tolerable foundation settlement (mm).
25
+ MAX_TOL_SETTLEMENT = 25.4
26
+
27
+ def __init__(
28
+ self,
29
+ corrected_spt_n_value: float,
30
+ tol_settlement: float,
31
+ foundation_size: Foundation,
32
+ ) -> None:
33
+ self.corrected_spt_n_value = corrected_spt_n_value
34
+ self.tol_settlement = tol_settlement
35
+ self.foundation_size = foundation_size
36
+
37
+ @property
38
+ def corrected_spt_n_value(self) -> float:
39
+ """Statistical average of corrected SPT N-value."""
40
+ return self._corrected_spt_n_value
41
+
42
+ @corrected_spt_n_value.setter
43
+ @validate_params
44
+ def corrected_spt_n_value(
45
+ self,
46
+ corrected_spt_n_value: Annotated[float, MustBeNonNegative],
47
+ ):
48
+ self._corrected_spt_n_value = corrected_spt_n_value
49
+
50
+ @property
51
+ def tol_settlement(self) -> float:
52
+ """Tolerable settlement of foundation (mm)."""
53
+ return self._tol_settlement
54
+
55
+ @tol_settlement.setter
56
+ @validate_params
57
+ def tol_settlement(
58
+ self,
59
+ tol_settlement: Annotated[float, MustBeLessThanOrEqual(25.4)],
60
+ ):
61
+ self._tol_settlement = tol_settlement
62
+
63
+ def _sr(self) -> float:
64
+ """Calculate the settlement ratio."""
65
+ return self.tol_settlement / self.MAX_TOL_SETTLEMENT
66
+
67
+ def _fd(self) -> float:
68
+ """Calculate the depth factor."""
69
+ depth = self.foundation_size.depth
70
+ width = self.foundation_size.width
71
+ return min(1.0 + 0.33 * depth / width, 1.33)
72
+
73
+ def bearing_capacity_results(self) -> AllowableBearingCapacityResult:
74
+ """Return bearing capacity results with intermediate calculations.
75
+
76
+ !!! info "Added in v0.11.0"
77
+ """
78
+ return AllowableBearingCapacityResult(
79
+ allowable_bearing_capacity=self.allowable_bearing_capacity(),
80
+ depth_factor=self._fd(),
81
+ )
82
+
83
+ @round_(ndigits=1)
84
+ def allowable_bearing_capacity(self) -> float:
85
+ """Calculates the allowable bearing capacity.
86
+
87
+ !!! info "Added in v0.12.0"
88
+ """
89
+ return self._bearing_capacity()
90
+
91
+ def allowable_applied_load(self) -> float:
92
+ """Calculate the allowable applied load on the foundation."""
93
+ return self._bearing_capacity() * self.foundation_size.foundation_area()
94
+
95
+ @abstractmethod
96
+ def _bearing_capacity(self) -> float: ...
@@ -14,10 +14,10 @@ class BowlesABC4PadFoundation(AllowableBearingCapacity):
14
14
  """
15
15
 
16
16
  def __init__(
17
- self,
18
- corrected_spt_n_value: float,
19
- tol_settlement: float,
20
- foundation_size: Foundation,
17
+ self,
18
+ corrected_spt_n_value: float,
19
+ tol_settlement: float,
20
+ foundation_size: Foundation,
21
21
  ) -> None:
22
22
  """
23
23
  :param corrected_spt_n_value: Statistical average of corrected
@@ -35,7 +35,7 @@ class BowlesABC4PadFoundation(AllowableBearingCapacity):
35
35
  )
36
36
 
37
37
  @round_(ndigits=2)
38
- def bearing_capacity(self) -> float:
38
+ def _bearing_capacity(self) -> float:
39
39
  """
40
40
  Calculate the allowable bearing capacity of the pad foundation.
41
41
  """
@@ -46,11 +46,11 @@ class BowlesABC4PadFoundation(AllowableBearingCapacity):
46
46
  return 19.16 * n_corr * self._fd() * self._sr()
47
47
 
48
48
  return (
49
- 11.98
50
- * n_corr
51
- * ((3.28 * width + 1) / (3.28 * width)) ** 2
52
- * self._fd()
53
- * self._sr()
49
+ 11.98
50
+ * n_corr
51
+ * ((3.28 * width + 1) / (3.28 * width)) ** 2
52
+ * self._fd()
53
+ * self._sr()
54
54
  )
55
55
 
56
56
 
@@ -64,7 +64,7 @@ class BowlesABC4MatFoundation(BowlesABC4PadFoundation):
64
64
  """
65
65
 
66
66
  @round_(ndigits=2)
67
- def bearing_capacity(self) -> float:
67
+ def _bearing_capacity(self) -> float:
68
68
  """
69
69
  Calculate the allowable bearing capacity of the mat foundation.
70
70
  """
@@ -14,10 +14,10 @@ class MeyerhofABC4PadFoundation(AllowableBearingCapacity):
14
14
  """
15
15
 
16
16
  def __init__(
17
- self,
18
- corrected_spt_n_value: float,
19
- tol_settlement: float,
20
- foundation_size: Foundation,
17
+ self,
18
+ corrected_spt_n_value: float,
19
+ tol_settlement: float,
20
+ foundation_size: Foundation,
21
21
  ):
22
22
  """
23
23
  :param corrected_spt_n_value: Average uncorrected SPT N-value
@@ -35,7 +35,7 @@ class MeyerhofABC4PadFoundation(AllowableBearingCapacity):
35
35
  )
36
36
 
37
37
  @round_(ndigits=2)
38
- def bearing_capacity(self):
38
+ def _bearing_capacity(self):
39
39
  """
40
40
  Calculates the allowable bearing capacity of the pad foundation.
41
41
  """
@@ -46,11 +46,11 @@ class MeyerhofABC4PadFoundation(AllowableBearingCapacity):
46
46
  return 12 * n_corr * self._fd() * self._sr()
47
47
 
48
48
  return (
49
- 8
50
- * n_corr
51
- * ((3.28 * width + 1) / (3.28 * width)) ** 2
52
- * self._fd()
53
- * self._sr()
49
+ 8
50
+ * n_corr
51
+ * ((3.28 * width + 1) / (3.28 * width)) ** 2
52
+ * self._fd()
53
+ * self._sr()
54
54
  )
55
55
 
56
56
 
@@ -64,7 +64,7 @@ class MeyerhofABC4MatFoundation(MeyerhofABC4PadFoundation):
64
64
  """
65
65
 
66
66
  @round_(ndigits=2)
67
- def bearing_capacity(self):
67
+ def _bearing_capacity(self):
68
68
  """Calculate the allowable bearing capacity of the mat foundation."""
69
69
  n_corr = self.corrected_spt_n_value
70
70
  return 8 * n_corr * self._fd() * self._sr()
@@ -1,7 +1,7 @@
1
1
  from geolysis.foundation import Foundation
2
- from geolysis.utils import round_
2
+ from geolysis.utils import round_, isinf
3
3
 
4
- from ._core import AllowableBearingCapacity
4
+ from ._core import AllowableBearingCapacity, AllowableBearingCapacityResult
5
5
 
6
6
 
7
7
  class TerzaghiABC4PadFoundation(AllowableBearingCapacity):
@@ -14,10 +14,10 @@ class TerzaghiABC4PadFoundation(AllowableBearingCapacity):
14
14
  """
15
15
 
16
16
  def __init__(
17
- self,
18
- corrected_spt_n_value: float,
19
- tol_settlement: float,
20
- foundation_size: Foundation,
17
+ self,
18
+ corrected_spt_n_value: float,
19
+ tol_settlement: float,
20
+ foundation_size: Foundation,
21
21
  ) -> None:
22
22
  """
23
23
  :param corrected_spt_n_value: Lowest (or average) uncorrected
@@ -46,7 +46,7 @@ class TerzaghiABC4PadFoundation(AllowableBearingCapacity):
46
46
  width = self.foundation_size.width
47
47
  water_level = self.foundation_size.ground_water_level
48
48
 
49
- if water_level is None:
49
+ if isinf(water_level):
50
50
  return 2.0
51
51
 
52
52
  if water_level <= depth:
@@ -57,7 +57,7 @@ class TerzaghiABC4PadFoundation(AllowableBearingCapacity):
57
57
  return min(cw, 2.0)
58
58
 
59
59
  @round_(ndigits=2)
60
- def bearing_capacity(self):
60
+ def _bearing_capacity(self):
61
61
  """
62
62
  Calculates the allowable bearing capacity of the pad foundation.
63
63
  """
@@ -68,16 +68,16 @@ class TerzaghiABC4PadFoundation(AllowableBearingCapacity):
68
68
  return 12 * n_corr * (1 / (self._cw() * self._fd())) * self._sr()
69
69
 
70
70
  return (
71
- 8
72
- * n_corr
73
- * ((3.28 * width + 1) / (3.28 * width)) ** 2
74
- * (1 / (self._cw() * self._fd()))
75
- * 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()
76
76
  )
77
77
 
78
- def bearing_capacity_results(self) -> dict:
78
+ def bearing_capacity_results(self) -> AllowableBearingCapacityResult:
79
79
  res = super().bearing_capacity_results()
80
- res["water_correction_factor"] = self._cw()
80
+ res.water_correction_factor = self._cw()
81
81
  return res
82
82
 
83
83
 
@@ -91,7 +91,7 @@ class TerzaghiABC4MatFoundation(TerzaghiABC4PadFoundation):
91
91
  """
92
92
 
93
93
  @round_(ndigits=2)
94
- def bearing_capacity(self):
94
+ def _bearing_capacity(self):
95
95
  """
96
96
  Calculates the allowable bearing capacity of the mat foundation.
97
97
  """