geolysis 0.9.0__py3-none-any.whl → 0.10.1__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.
Files changed (32) hide show
  1. geolysis/__init__.py +3 -3
  2. geolysis/bearing_capacity/abc/__init__.py +21 -0
  3. geolysis/bearing_capacity/abc/_cohl/__init__.py +109 -0
  4. geolysis/bearing_capacity/abc/{cohl → _cohl}/_core.py +25 -8
  5. geolysis/bearing_capacity/abc/_cohl/bowles_abc.py +103 -0
  6. geolysis/bearing_capacity/abc/_cohl/meyerhof_abc.py +100 -0
  7. geolysis/bearing_capacity/abc/_cohl/terzaghi_abc.py +148 -0
  8. geolysis/bearing_capacity/ubc/__init__.py +107 -128
  9. geolysis/bearing_capacity/ubc/_core.py +82 -52
  10. geolysis/bearing_capacity/ubc/_hansen_ubc.py +271 -0
  11. geolysis/bearing_capacity/ubc/_terzaghi_ubc.py +178 -0
  12. geolysis/bearing_capacity/ubc/_vesic_ubc.py +253 -0
  13. geolysis/foundation.py +146 -136
  14. geolysis/soil_classifier.py +386 -290
  15. geolysis/spt.py +323 -257
  16. geolysis/{utils/__init__.py → utils.py} +44 -33
  17. geolysis-0.10.1.dist-info/METADATA +182 -0
  18. geolysis-0.10.1.dist-info/RECORD +22 -0
  19. {geolysis-0.9.0.dist-info → geolysis-0.10.1.dist-info}/WHEEL +1 -1
  20. geolysis/bearing_capacity/abc/cohl/__init__.py +0 -137
  21. geolysis/bearing_capacity/abc/cohl/bowles_abc.py +0 -96
  22. geolysis/bearing_capacity/abc/cohl/meyerhof_abc.py +0 -96
  23. geolysis/bearing_capacity/abc/cohl/terzaghi_abc.py +0 -131
  24. geolysis/bearing_capacity/ubc/hansen_ubc.py +0 -287
  25. geolysis/bearing_capacity/ubc/terzaghi_ubc.py +0 -246
  26. geolysis/bearing_capacity/ubc/vesic_ubc.py +0 -293
  27. geolysis/utils/exceptions.py +0 -65
  28. geolysis/utils/validators.py +0 -119
  29. geolysis-0.9.0.dist-info/METADATA +0 -206
  30. geolysis-0.9.0.dist-info/RECORD +0 -24
  31. {geolysis-0.9.0.dist-info → geolysis-0.10.1.dist-info}/licenses/LICENSE.txt +0 -0
  32. {geolysis-0.9.0.dist-info → geolysis-0.10.1.dist-info}/top_level.txt +0 -0
@@ -1,30 +1,46 @@
1
+ import enum
1
2
  import functools
2
3
  import math
3
4
  from math import exp, inf, isclose, log10, pi, sqrt
4
5
  from statistics import fmean as mean
5
- from typing import (Any, Callable, NotRequired, Optional, SupportsRound,
6
- TypedDict, Unpack)
7
-
8
- from . import validators
9
-
10
- __all__ = ["ErrorMsg",
11
- "enum_repr",
12
- "inf",
13
- "pi",
14
- "deg2rad",
15
- "rad2deg",
16
- "tan",
17
- "cot",
18
- "sin",
19
- "cos",
20
- "arctan",
21
- "round_",
22
- "mean",
23
- "exp",
24
- "isclose",
25
- "log10",
26
- "sqrt",
27
- "validators"]
6
+ from typing import Callable
7
+
8
+ __all__ = [
9
+ "AbstractStrEnum",
10
+ "inf",
11
+ "pi",
12
+ "deg2rad",
13
+ "rad2deg",
14
+ "tan",
15
+ "cot",
16
+ "sin",
17
+ "cos",
18
+ "arctan",
19
+ "round_",
20
+ "mean",
21
+ "exp",
22
+ "isclose",
23
+ "log10",
24
+ "sqrt",
25
+ ]
26
+
27
+
28
+ class StrEnumMeta(enum.EnumMeta):
29
+ def __contains__(cls, item) -> bool:
30
+ if isinstance(item, (str, cls)):
31
+ return str(item) in (member.value for member in cls)
32
+ return NotImplemented
33
+
34
+ def __repr__(cls) -> str:
35
+ return str([member.value for member in cls])
36
+
37
+
38
+ class AbstractStrEnum(enum.StrEnum, metaclass=StrEnumMeta):
39
+ """An abstract string enumeration class that inherits from StrEnum.
40
+
41
+ This class can be used as a base class for creating string
42
+ enumerations.
43
+ """
28
44
 
29
45
 
30
46
  def deg2rad(x: float, /) -> float:
@@ -62,19 +78,14 @@ def arctan(x: float, /) -> float:
62
78
  return rad2deg(math.atan(x))
63
79
 
64
80
 
65
- def enum_repr(cls):
66
- cls.__repr__ = lambda self: f"{self.value}"
67
- return cls
68
-
69
-
70
81
  def round_(ndigits: int) -> Callable:
71
- """A decorator that rounds the result of a callable to a specified number
72
- of decimal places.
82
+ """A decorator that rounds the result of a callable to a specified
83
+ number of decimal places.
73
84
 
74
- The returned value of the callable should support the ``__round__`` dunder
75
- method and should be a numeric value.
85
+ The returned value of the callable should support the `__round__`
86
+ dunder method and should be a numeric value.
76
87
 
77
- TypeError is raised when ``ndigits`` is not an int.
88
+ TypeError is raised when `ndigits` is not an int.
78
89
  """
79
90
 
80
91
  if not isinstance(ndigits, int):
@@ -0,0 +1,182 @@
1
+ Metadata-Version: 2.4
2
+ Name: geolysis
3
+ Version: 0.10.1
4
+ Summary: geolysis is an opensource software for geotechnical engineering analysis and modeling.
5
+ Author-email: Patrick Boateng <boatengpato.pb@gmail.com>
6
+ License: MIT License
7
+ Project-URL: Homepage, https://docs.geolysis.io
8
+ Project-URL: Documentation, https://docs.geolysis.io
9
+ Project-URL: Repository, https://github.com/patrickboateng/geolysis
10
+ Project-URL: Discussions, https://github.com/patrickboateng/geolysis/discussions
11
+ Project-URL: Issue Tracker, https://github.com/patrickboateng/geolysis/issues
12
+ Keywords: geotechnical-engineering,soil-classification,bearing-capacity-analysis,standard-penetration-test-analysis
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: Intended Audience :: Education
16
+ Classifier: Intended Audience :: Science/Research
17
+ Classifier: License :: OSI Approved :: MIT License
18
+ Classifier: Natural Language :: English
19
+ Classifier: Operating System :: OS Independent
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Programming Language :: Python :: Implementation :: CPython
23
+ Classifier: Topic :: Scientific/Engineering
24
+ Requires-Python: >=3.11
25
+ Description-Content-Type: text/markdown
26
+ License-File: LICENSE.txt
27
+ Requires-Dist: func-validator
28
+ Provides-Extra: dev
29
+ Requires-Dist: pytest; extra == "dev"
30
+ Requires-Dist: pytest-cov; extra == "dev"
31
+ Requires-Dist: coverage; extra == "dev"
32
+ Dynamic: license-file
33
+
34
+ <div align="center">
35
+ <img src="https://raw.githubusercontent.com/patrickboateng/geolysis/main/docs/assets/pkg-logo.svg"
36
+ alt="logo" width="30%" height="30%" />
37
+ </div><br>
38
+
39
+ <div align="center">
40
+
41
+ [![PyPI Latest Release](https://img.shields.io/pypi/v/geolysis?style=flat&logo=pypi)](https://pypi.org/project/geolysis/)
42
+ [![PyPI Downloads](https://static.pepy.tech/badge/geolysis)](https://pepy.tech/projects/geolysis)
43
+ [![PyPI pyversions](https://img.shields.io/pypi/pyversions/geolysis.svg?logo=python&style=flat)](https://pypi.python.org/pypi/geolysis/)
44
+ [![license](https://img.shields.io/pypi/l/geolysis?style=flat&logo=opensourceinitiative)](https://opensource.org/license/mit/)
45
+
46
+ ![Coveralls Status](https://img.shields.io/coverallsCoverage/github/patrickboateng/geolysis?logo=coveralls)
47
+ [![Codacy Badge](https://app.codacy.com/project/badge/Grade/17f88084c6a84a08a20f9d8da1438107)](https://app.codacy.com/gh/patrickboateng/geolysis/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)
48
+ [![Unit-Tests](https://github.com/patrickboateng/geolysis/actions/workflows/geolysis-unit-tests.yml/badge.svg)](https://github.com/patrickboateng/geolysis/actions/workflows/geolysis-unit-tests.yml)
49
+ [![Documentation Status](https://readthedocs.org/projects/geolysis/badge/?version=latest)](https://geolysis.readthedocs.io/en/latest/?badge=latest)
50
+
51
+ </div>
52
+
53
+ `geolysis` is an open-source python package (library) for geotechnical analysis
54
+ and modeling.
55
+
56
+ The `geolysis` python package is among three other projects, `geolysis.excel`,
57
+ `geolysis.gui`, and `geolysis.ai`. More details about these projects are
58
+ provided [here](https://github.com/geolysis-dev).
59
+
60
+ The rest of this **README** provides an overview of the `geolysis` python
61
+ package.
62
+
63
+ ## Table of Contents
64
+
65
+ - [Installation](#installation)
66
+ - [API Reference](#api-reference)
67
+ - [Imports](#imports)
68
+ - [Project Structure](#project-structure)
69
+ - [Usage](#usage)
70
+ - [Documentation](#documentation)
71
+ - [Contributing](#contributing)
72
+ - [License](#license)
73
+ - [Contact](#contact)
74
+
75
+ ## Installation
76
+
77
+ ```shell
78
+ $ pip install geolysis
79
+ ```
80
+
81
+ ## API Reference
82
+
83
+ - [Python API](https://docs.geolysis.io/en/latest/reference/)
84
+ - [geolysis.bearing_capacity.abc](https://docs.geolysis.io/en/latest/reference/allowable_bearing_capacity/) - _Allowable bearing capacity
85
+ estimation_
86
+ - [geolysis.bearing_capacity.ubc](https://docs.geolysis.io/en/latest/reference/ultimate_bearing_capacity/) - _Ultimate bearing capacity
87
+ estimation_
88
+ - [geolysis.foundation](https://docs.geolysis.io/en/latest/reference/foundation/) - _Foundation Representation_
89
+ - [geolysis.soil_classifier](https://docs.geolysis.io/en/latest/reference/soil_classifier/) - _Soil classification_
90
+ - [geolysis.spt](https://docs.geolysis.io/en/latest/reference/spt/) - _Standard Penetration Test (SPT) Analysis_
91
+ - [geolysis.utils](https://docs.geolysis.io/en/latest/reference/utils/) - _Utilities_
92
+
93
+
94
+ ## Imports
95
+
96
+ - **Bearing Capacity**
97
+
98
+ - **Allowable Bearing Capacity (ABC)**
99
+
100
+ ```python
101
+ from geolysis.bearing_capacity.abc import create_abc_4_cohesionless_soils
102
+ ```
103
+
104
+ - **Ultimate Bearing Capacity (UBC)**
105
+
106
+ ```python
107
+ from geolysis.bearing_capacity.ubc import create_ubc_4_all_soil_types
108
+ ```
109
+
110
+ - **Foundation**
111
+
112
+ ```python
113
+ from geolysis.foundation import create_foundation
114
+ ```
115
+
116
+
117
+ - **Soil Classification**
118
+
119
+ ```python
120
+ from geolysis.soil_classifier import create_uscs_classifier
121
+ from geolysis.soil_classifier import create_aashto_classifier
122
+ ```
123
+
124
+ - **Standard Penetration Test (SPT) Analysis**
125
+
126
+ ```python
127
+ from geolysis.spt import DilatancyCorrection
128
+ from geolysis.spt import EnergyCorrection
129
+ from geolysis.spt import SPT
130
+ from geolysis.spt import create_overburden_pressure_correction
131
+ ```
132
+
133
+ ## Project Structure
134
+
135
+ .
136
+ ├── .github # GitHub Actions
137
+ ├── docs # Documentation files
138
+ ├── geolysis # Source files
139
+ ├── tests # Automated tests
140
+ ├── pyproject.toml # Project configuration file
141
+ └── README.md # Project README file
142
+
143
+ ## Usage
144
+
145
+ ```python
146
+
147
+ >>> from geolysis.soil_classifier import create_aashto_classifier
148
+ >>> aashto_clf = create_aashto_classifier(liquid_limit=34.1,
149
+ ... plastic_limit=21.1,
150
+ ... fines=47.88, )
151
+ >>> clf = aashto_clf.classify()
152
+ >>> clf.symbol
153
+ 'A-6(4)'
154
+ >>> clf.symbol_no_grp_idx
155
+ 'A-6'
156
+ >>> clf.group_index
157
+ '4'
158
+ >>> clf.description
159
+ 'Clayey soils'
160
+
161
+ ```
162
+
163
+ Check out more [examples](https://docs.geolysis.io/en/latest/usage/)
164
+
165
+ ## Documentation
166
+
167
+ Check out the full [documentation](https://docs.geolysis.io/en/latest/).
168
+
169
+ ## Contributing
170
+
171
+ Check out the [contribution guidelines](https://docs.geolysis.io/en/latest/dev_guide/)
172
+
173
+ ## License
174
+
175
+ This project is licensed under the MIT License - see the
176
+ [LICENSE](https://github.com/patrickboateng/geolysis/blob/main/LICENSE.txt)
177
+ file for more details.
178
+
179
+ ## Contact
180
+
181
+ For questions or feedback, please
182
+ contact [patrickboateng at patrickboateng dot tech](mailto:patrickboateng@patrickboateng.tech)
@@ -0,0 +1,22 @@
1
+ geolysis/__init__.py,sha256=7PLkiGKd-xhbUc9l3q7UnBsWpwzXmxYJxUaX7D-tK50,161
2
+ geolysis/foundation.py,sha256=khmZCa8V-UEqp7A4WlIwt8Oy5tVQdT0UsaLMuxEbDQU,12819
3
+ geolysis/soil_classifier.py,sha256=gPOl9Fr18r4aDtVBFK5KdWdsLIvpTLLMTt7YU49noSA,27442
4
+ geolysis/spt.py,sha256=_AWfs5Ho5ScCwPlVDNh6cuhcLOR4-u7Dr7UoagRlDoM,18620
5
+ geolysis/utils.py,sha256=hgAeuMoGxL_GRbzYD3jZHglFxAmeqUa8FBqM0sm40lc,2394
6
+ geolysis/bearing_capacity/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
+ geolysis/bearing_capacity/abc/__init__.py,sha256=QCSni6_QI059y3JF5UU9Gd_wAyVLmVEMR7ajq_EZQRg,518
8
+ geolysis/bearing_capacity/abc/_cohl/__init__.py,sha256=M1EBn2WMgtG-Dg-LT7N-OVke6upwL6plqyPCn3ebR0M,4110
9
+ geolysis/bearing_capacity/abc/_cohl/_core.py,sha256=YhU6wDVaMOxMUGQ0QHKCeD0eHHTj3la_R3iBBF1-hl0,1932
10
+ geolysis/bearing_capacity/abc/_cohl/bowles_abc.py,sha256=AC0OslIUZBxC5ClB0HNvLoVDwnt982l8OGPuxyE2uZ0,3153
11
+ geolysis/bearing_capacity/abc/_cohl/meyerhof_abc.py,sha256=Zf4X6YVrPMH5Sgm0bORbWe4RgfO-jVJBdeRWl8jBRH8,3056
12
+ geolysis/bearing_capacity/abc/_cohl/terzaghi_abc.py,sha256=za5Altz8uzIqY0RJML8FTCIIyRSyHN04j7y80zop6JA,4300
13
+ geolysis/bearing_capacity/ubc/__init__.py,sha256=5EtGLFW0vwCfUGxQDKPQJ687C9AKRlbYEPYb2aY2AgA,4578
14
+ geolysis/bearing_capacity/ubc/_core.py,sha256=GfE0ZzPqC5VJ8PakR5ZiFvsfSwuEYrEzuPOuVdLnz_Q,6570
15
+ geolysis/bearing_capacity/ubc/_hansen_ubc.py,sha256=aVu40WFCtvstWNq3x65Klb9am4UfJq00MtfaJYIwifI,6995
16
+ geolysis/bearing_capacity/ubc/_terzaghi_ubc.py,sha256=U9mt92glUuooXnd_NPOFDpEdG15bTdb_KPPXLu5zjPw,5503
17
+ geolysis/bearing_capacity/ubc/_vesic_ubc.py,sha256=a8TvlJCZ4AMU_YEVE0DEXb_Eo75uVOtOLDg-mC3zYlc,7034
18
+ geolysis-0.10.1.dist-info/licenses/LICENSE.txt,sha256=ap6sMs3lT7ICbEXBhgihwH1BTCVcjmCQkIkwVnil1Ak,1065
19
+ geolysis-0.10.1.dist-info/METADATA,sha256=aVk_B0GATH12dmxc-r-ck0Nr9LqRdb1x41GuykFNxgQ,6641
20
+ geolysis-0.10.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
21
+ geolysis-0.10.1.dist-info/top_level.txt,sha256=9mnQgOaCRr11dtXff8X-q3FfXjRONd6kHseSy5q2y8g,9
22
+ geolysis-0.10.1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.8.0)
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,137 +0,0 @@
1
- """This package provides a factory function and utilities for creating
2
- allowable bearing capacity calculations using methods like Bowles, Meyerhof,
3
- and Terzaghi for various foundation types and shapes.
4
- """
5
- import enum
6
- from typing import Optional
7
-
8
- from geolysis.foundation import FoundationType, Shape, create_foundation
9
- from geolysis.utils import enum_repr, inf
10
- from geolysis.utils.exceptions import ErrorMsg, ValidationError
11
-
12
- from ._core import AllowableBearingCapacity
13
- from .bowles_abc import BowlesABC4MatFoundation, BowlesABC4PadFoundation
14
- from .meyerhof_abc import MeyerhofABC4MatFoundation, MeyerhofABC4PadFoundation
15
- from .terzaghi_abc import TerzaghiABC4MatFoundation, TerzaghiABC4PadFoundation
16
-
17
-
18
- @enum_repr
19
- class ABCType(enum.StrEnum):
20
- """Enumeration of available allowable bearing capacity types."""
21
- BOWLES = enum.auto()
22
- MEYERHOF = enum.auto()
23
- TERZAGHI = enum.auto()
24
-
25
-
26
- abc_classes = {
27
- ABCType.BOWLES: {
28
- FoundationType.PAD: BowlesABC4PadFoundation,
29
- FoundationType.MAT: BowlesABC4MatFoundation,
30
- },
31
- ABCType.MEYERHOF: {
32
- FoundationType.PAD: MeyerhofABC4PadFoundation,
33
- FoundationType.MAT: MeyerhofABC4MatFoundation,
34
- },
35
- ABCType.TERZAGHI: {
36
- FoundationType.PAD: TerzaghiABC4PadFoundation,
37
- FoundationType.MAT: TerzaghiABC4MatFoundation,
38
- }
39
- }
40
-
41
-
42
- def create_allowable_bearing_capacity(corrected_spt_n_value: float,
43
- tol_settlement: float,
44
- depth: float,
45
- width: float,
46
- length: Optional[float] = None,
47
- eccentricity: float = 0.0,
48
- ground_water_level: float = inf,
49
- shape: Shape | str = Shape.SQUARE,
50
- foundation_type: FoundationType | str =
51
- FoundationType.PAD,
52
- abc_type: Optional[
53
- ABCType | str] = None,
54
- ) -> AllowableBearingCapacity:
55
- """ A factory function that encapsulate the creation of allowable bearing
56
- capacities.
57
-
58
- :param corrected_spt_n_value: The corrected SPT N-value.
59
- :type corrected_spt_n_value: float
60
-
61
- :param tol_settlement: Tolerable settlement of foundation (mm).
62
- :type tol_settlement: float
63
-
64
- :param depth: Depth of foundation (m).
65
- :type depth: float
66
-
67
- :param width: Width of foundation footing (m).
68
- :type width: float
69
-
70
- :param length: Length of foundation footing (m).
71
- :type length: float, optional
72
-
73
- :param eccentricity: The deviation of the foundation load from the center
74
- of gravity of the foundation footing (m), defaults to
75
- 0.0. This means that the foundation load aligns with
76
- the center of gravity of the foundation footing.
77
- :type eccentricity: float, optional
78
-
79
- :param ground_water_level: Depth of water below ground level (m).
80
- :type ground_water_level: float, optional
81
-
82
- :param shape: Shape of foundation footing, defaults to
83
- :py:enum:mem:`~geolysis.foundation.Shape.SQUARE`.
84
- :type shape: str, optional
85
-
86
- :param foundation_type: Type of foundation, defaults to "pad".
87
- :type foundation_type: FoundationType | str, optional
88
-
89
- :param abc_type: Type of allowable bearing capacity calculation to apply.
90
- Available values can be found in :py:enum:`ABCType`,
91
- defaults to None.
92
- :type abc_type: ABCType | str, optional
93
-
94
- :raises ValueError: Raised if ``abc_type`` or ``foundation_type`` is not
95
- supported.
96
- :raises ValueError: Raised when ``length`` is not provided for a rectangular
97
- footing.
98
- :raises ValueError: Raised if an invalid footing ``shape`` is provided.
99
- """
100
-
101
- msg = ErrorMsg(param_name="abc_type",
102
- param_value=abc_type,
103
- symbol="in",
104
- param_value_bound=list(ABCType))
105
-
106
- if abc_type is None:
107
- raise ValidationError(msg)
108
-
109
- try:
110
- abc_type = ABCType(str(abc_type).casefold())
111
- except ValueError as e:
112
- raise ValidationError(msg) from e
113
-
114
- try:
115
- foundation_type = FoundationType(str(foundation_type).casefold())
116
- except ValueError as e:
117
- msg = ErrorMsg(param_name="foundation_type",
118
- param_value=foundation_type,
119
- symbol="in",
120
- param_value_bound=list(FoundationType))
121
- raise ValidationError(msg) from e
122
-
123
- # exception from create_foundation will automaatically propagate
124
- # no need to catch and handle it.
125
- fnd_size = create_foundation(depth=depth,
126
- width=width,
127
- length=length,
128
- eccentricity=eccentricity,
129
- ground_water_level=ground_water_level,
130
- foundation_type=foundation_type,
131
- shape=shape)
132
-
133
- abc_class = abc_classes[abc_type][fnd_size.foundation_type]
134
- abc = abc_class(corrected_spt_n_value=corrected_spt_n_value,
135
- tol_settlement=tol_settlement,
136
- foundation_size=fnd_size)
137
- return abc
@@ -1,96 +0,0 @@
1
- from geolysis.foundation import Foundation
2
- from geolysis.utils import round_
3
-
4
- from ._core import AllowableBearingCapacity
5
-
6
-
7
- class BowlesABC4PadFoundation(AllowableBearingCapacity):
8
- r"""Allowable bearing capacity for pad foundation on cohesionless soils
9
- according to ``Bowles (1997)``.
10
-
11
- :Equation:
12
-
13
- .. math::
14
-
15
- q_a(kPa) &= 19.16(N_1)_{55} f_d\left(\dfrac{S}{25.4}\right),
16
- \ B \ \le \ 1.2m
17
-
18
- q_a(kPa) &= 11.98(N_1)_{55}\left(\dfrac{3.28B + 1}{3.28B} \right)^2
19
- f_d \left(\dfrac{S}{25.4}\right), \ B \ \gt 1.2m
20
-
21
- f_d &= 1 + 0.33 \cdot \frac{D_f}{B} \le 1.33
22
-
23
- =================== ====================================== ===========
24
- Symbol Description Unit
25
- =================== ====================================== ===========
26
- :math:`q_a` Allowable bearing capacity :math:`kPa`
27
- :math:`(N_1)_{55}` Corrected SPT N-value —
28
- :math:`f_d` Depth factor —
29
- :math:`S` Tolerable settlement :math:`mm`
30
- :math:`B` Width of foundation footing :math:`m`
31
- :math:`D_f` Depth of foundation footing :math:`m`
32
- =================== ====================================== ===========
33
- """
34
-
35
- def __init__(self, corrected_spt_n_value: float,
36
- tol_settlement: float,
37
- foundation_size: Foundation) -> None:
38
- """
39
- :param corrected_spt_n_value: Statistical average of corrected SPT
40
- N-value (55% energy with overburden
41
- pressure correction) within the foundation
42
- influence zone i.e ``0.5B`` to ``2B``.
43
- :type corrected_spt_n_value: float
44
-
45
- :param tol_settlement: Tolerable settlement of foundation (mm).
46
- :type tol_settlement: float
47
-
48
- :param foundation_size: Size of the foundation.
49
- :type foundation_size: Foundation
50
- """
51
- super().__init__(corrected_spt_n_value=corrected_spt_n_value,
52
- tol_settlement=tol_settlement,
53
- foundation_size=foundation_size)
54
-
55
- @round_(ndigits=2)
56
- def bearing_capacity(self) -> float:
57
- """Calculate the allowable bearing capacity of the pad foundation."""
58
- n_corr = self.corrected_spt_n_value
59
- width = self.foundation_size.width
60
-
61
- if width <= 1.2:
62
- return 19.16 * n_corr * self._fd() * self._sr()
63
-
64
- return (11.98 * n_corr * ((3.28 * width + 1) / (3.28 * width)) ** 2
65
- * self._fd() * self._sr())
66
-
67
-
68
- class BowlesABC4MatFoundation(BowlesABC4PadFoundation):
69
- r"""Allowable bearing capacity for mat foundation on cohesionless soils
70
- according to ``Bowles (1997)``.
71
-
72
- :Equation:
73
-
74
- .. math::
75
-
76
- q_a(kPa) &= 11.98(N_1)_{55}f_d\left(\dfrac{S}{25.4}\right)
77
-
78
- f_d &= 1 + 0.33 \cdot \frac{D_f}{B} \le 1.33
79
-
80
- =================== ====================================== ===========
81
- Symbol Description Unit
82
- =================== ====================================== ===========
83
- :math:`q_a` Allowable bearing capacity :math:`kPa`
84
- :math:`(N_1)_{55}` Corrected SPT N-value —
85
- :math:`f_d` Depth factor —
86
- :math:`S` Tolerable settlement :math:`mm`
87
- :math:`B` Width of foundation footing :math:`m`
88
- :math:`D_f` Depth of foundation footing :math:`m`
89
- =================== ====================================== ===========
90
- """
91
-
92
- @round_(ndigits=2)
93
- def bearing_capacity(self) -> float:
94
- """Calculate the allowable bearing capacity of the mat foundation."""
95
- n_corr = self.corrected_spt_n_value
96
- return 11.98 * n_corr * self._fd() * self._sr()
@@ -1,96 +0,0 @@
1
- from geolysis.foundation import Foundation
2
- from geolysis.utils import round_
3
-
4
- from ._core import AllowableBearingCapacity
5
-
6
-
7
- class MeyerhofABC4PadFoundation(AllowableBearingCapacity):
8
- r"""Allowable bearing capacity for pad foundation on cohesionless soils
9
- according to ``Meyerhof (1956)``.
10
-
11
- :Equation:
12
-
13
- .. math::
14
-
15
- q_a(kPa) &= 12N f_d\left(\dfrac{S}{25.4}\right), \ B \ \le 1.2m
16
-
17
- q_a(kPa) &= 8N\left(\dfrac{3.28B + 1}{3.28B} \right)^2 f_d\left(
18
- \dfrac{S}{25.4}\right), \ B \ \gt 1.2m
19
-
20
- f_d &= 1 + 0.33 \cdot \frac{D_f}{B} \le 1.33
21
-
22
- =================== ====================================== ===========
23
- Symbol Description Unit
24
- =================== ====================================== ===========
25
- :math:`q_a` Allowable bearing capacity :math:`kPa`
26
- :math:`N` Corrected SPT N-value —
27
- :math:`f_d` Depth factor —
28
- :math:`S` Tolerable settlement :math:`mm`
29
- :math:`B` Width of foundation footing :math:`m`
30
- :math:`D_f` Depth of foundation footing :math:`m`
31
- =================== ====================================== ===========
32
- """
33
-
34
- def __init__(self, corrected_spt_n_value: float,
35
- tol_settlement: float,
36
- foundation_size: Foundation):
37
- """
38
- :param corrected_spt_n_value: Average uncorrected SPT N-value (60%
39
- energy with dilatancy (water) correction
40
- if applicable) within the foundation
41
- influence zone i.e :math:`D_f` to
42
- :math:`D_f + 2B`.
43
- :type corrected_spt_n_value: float
44
-
45
- :param tol_settlement: Tolerable settlement of foundation (mm).
46
- :type tol_settlement: float
47
-
48
- :param foundation_size: Size of the foundation.
49
- :type foundation_size: Foundation
50
- """
51
- super().__init__(corrected_spt_n_value=corrected_spt_n_value,
52
- tol_settlement=tol_settlement,
53
- foundation_size=foundation_size)
54
-
55
- @round_(ndigits=2)
56
- def bearing_capacity(self):
57
- """Calculates the allowable bearing capacity of the pad foundation."""
58
- n_corr = self.corrected_spt_n_value
59
- width = self.foundation_size.width
60
-
61
- if width <= 1.2:
62
- return 12 * n_corr * self._fd() * self._sr()
63
-
64
- return (8 * n_corr * ((3.28 * width + 1) / (3.28 * width)) ** 2
65
- * self._fd() * self._sr())
66
-
67
-
68
- class MeyerhofABC4MatFoundation(MeyerhofABC4PadFoundation):
69
- r"""Allowable bearing capacity for mat foundation on cohesionless soils
70
- according to ``Meyerhof (1956)``.
71
-
72
- :Equation:
73
-
74
- .. math::
75
-
76
- q_a(kPa) &= 8 N f_d\left(\dfrac{S}{25.4}\right)
77
-
78
- f_d &= 1 + 0.33 \cdot \frac{D_f}{B} \le 1.33
79
-
80
- =================== ====================================== ===========
81
- Symbol Description Unit
82
- =================== ====================================== ===========
83
- :math:`q_a` Allowable bearing capacity :math:`kPa`
84
- :math:`N` Corrected SPT N-value —
85
- :math:`f_d` Depth factor —
86
- :math:`S` Tolerable settlement :math:`mm`
87
- :math:`B` Width of foundation footing :math:`m`
88
- :math:`D_f` Depth of foundation footing :math:`m`
89
- =================== ====================================== ===========
90
- """
91
-
92
- @round_(ndigits=2)
93
- def bearing_capacity(self):
94
- """Calculate the allowable bearing capacity of the mat foundation."""
95
- n_corr = self.corrected_spt_n_value
96
- return 8 * n_corr * self._fd() * self._sr()