geolysis 0.9.0__py3-none-any.whl → 0.10.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- geolysis/__init__.py +3 -3
- geolysis/bearing_capacity/abc/__init__.py +21 -0
- geolysis/bearing_capacity/abc/_cohl/__init__.py +109 -0
- geolysis/bearing_capacity/abc/{cohl → _cohl}/_core.py +19 -8
- geolysis/bearing_capacity/abc/_cohl/bowles_abc.py +103 -0
- geolysis/bearing_capacity/abc/_cohl/meyerhof_abc.py +100 -0
- geolysis/bearing_capacity/abc/_cohl/terzaghi_abc.py +143 -0
- geolysis/bearing_capacity/ubc/__init__.py +107 -128
- geolysis/bearing_capacity/ubc/_core.py +65 -52
- geolysis/bearing_capacity/ubc/_hansen_ubc.py +271 -0
- geolysis/bearing_capacity/ubc/_terzaghi_ubc.py +178 -0
- geolysis/bearing_capacity/ubc/_vesic_ubc.py +253 -0
- geolysis/foundation.py +146 -136
- geolysis/soil_classifier.py +379 -283
- geolysis/spt.py +323 -257
- geolysis/{utils/__init__.py → utils.py} +44 -33
- geolysis-0.10.0.dist-info/METADATA +181 -0
- geolysis-0.10.0.dist-info/RECORD +22 -0
- {geolysis-0.9.0.dist-info → geolysis-0.10.0.dist-info}/WHEEL +1 -1
- geolysis/bearing_capacity/abc/cohl/__init__.py +0 -137
- geolysis/bearing_capacity/abc/cohl/bowles_abc.py +0 -96
- geolysis/bearing_capacity/abc/cohl/meyerhof_abc.py +0 -96
- geolysis/bearing_capacity/abc/cohl/terzaghi_abc.py +0 -131
- geolysis/bearing_capacity/ubc/hansen_ubc.py +0 -287
- geolysis/bearing_capacity/ubc/terzaghi_ubc.py +0 -246
- geolysis/bearing_capacity/ubc/vesic_ubc.py +0 -293
- geolysis/utils/exceptions.py +0 -65
- geolysis/utils/validators.py +0 -119
- geolysis-0.9.0.dist-info/METADATA +0 -206
- geolysis-0.9.0.dist-info/RECORD +0 -24
- {geolysis-0.9.0.dist-info → geolysis-0.10.0.dist-info}/licenses/LICENSE.txt +0 -0
- {geolysis-0.9.0.dist-info → geolysis-0.10.0.dist-info}/top_level.txt +0 -0
@@ -1,293 +0,0 @@
|
|
1
|
-
from geolysis.foundation import Shape
|
2
|
-
from geolysis.utils import isclose, round_, sin, tan
|
3
|
-
|
4
|
-
from . import hansen_ubc
|
5
|
-
from ._core import UltimateBearingCapacity
|
6
|
-
|
7
|
-
__all__ = ["VesicUltimateBearingCapacity"]
|
8
|
-
|
9
|
-
|
10
|
-
@round_(ndigits=2)
|
11
|
-
def n_c(friction_angle: float) -> float:
|
12
|
-
return hansen_ubc.n_c(friction_angle)
|
13
|
-
|
14
|
-
|
15
|
-
@round_(ndigits=2)
|
16
|
-
def n_q(friction_angle: float) -> float:
|
17
|
-
return hansen_ubc.n_q(friction_angle)
|
18
|
-
|
19
|
-
|
20
|
-
@round_(ndigits=2)
|
21
|
-
def n_gamma(friction_angle: float) -> float:
|
22
|
-
return 2.0 * (n_q(friction_angle) + 1.0) * tan(friction_angle)
|
23
|
-
|
24
|
-
|
25
|
-
@round_(ndigits=2)
|
26
|
-
def s_c(friction_angle: float,
|
27
|
-
f_width: float,
|
28
|
-
f_length: float,
|
29
|
-
f_shape: Shape) -> float:
|
30
|
-
_n_q = n_q(friction_angle)
|
31
|
-
_n_c = n_c(friction_angle)
|
32
|
-
|
33
|
-
if f_shape == Shape.STRIP:
|
34
|
-
return 1.0
|
35
|
-
elif f_shape == Shape.RECTANGLE:
|
36
|
-
return 1.0 + (f_width / f_length) * (_n_q / _n_c)
|
37
|
-
else: # SQUARE, CIRCLE
|
38
|
-
return 1.0 + (_n_q / _n_c)
|
39
|
-
|
40
|
-
|
41
|
-
@round_(ndigits=2)
|
42
|
-
def s_q(friction_angle: float,
|
43
|
-
f_width: float,
|
44
|
-
f_length: float,
|
45
|
-
f_shape: Shape) -> float:
|
46
|
-
if f_shape == Shape.STRIP:
|
47
|
-
return 1.0
|
48
|
-
elif f_shape == Shape.RECTANGLE:
|
49
|
-
return 1.0 + (f_width / f_length) * tan(friction_angle)
|
50
|
-
else: # SQUARE, CIRCLE
|
51
|
-
return 1.0 + tan(friction_angle)
|
52
|
-
|
53
|
-
|
54
|
-
@round_(ndigits=2)
|
55
|
-
def s_gamma(f_width: float, f_length: float, f_shape: Shape) -> float:
|
56
|
-
if f_shape == Shape.STRIP:
|
57
|
-
return 1.0
|
58
|
-
elif f_shape == Shape.RECTANGLE:
|
59
|
-
return 1.0 - 0.4 * (f_width / f_length)
|
60
|
-
else: # SQUARE, CIRCLE
|
61
|
-
return 0.6
|
62
|
-
|
63
|
-
|
64
|
-
@round_(ndigits=2)
|
65
|
-
def d_c(f_depth: float, f_width: float) -> float:
|
66
|
-
return 1.0 + 0.4 * f_depth / f_width
|
67
|
-
|
68
|
-
|
69
|
-
@round_(ndigits=2)
|
70
|
-
def d_q(friction_angle: float, f_depth: float, f_width: float) -> float:
|
71
|
-
return (1.0 + 2.0 * tan(friction_angle)
|
72
|
-
* (1.0 - sin(friction_angle)) ** 2.0
|
73
|
-
* (f_depth / f_width))
|
74
|
-
|
75
|
-
|
76
|
-
@round_(ndigits=2)
|
77
|
-
def d_gamma() -> float:
|
78
|
-
return 1.0
|
79
|
-
|
80
|
-
|
81
|
-
@round_(ndigits=2)
|
82
|
-
def i_c(load_angle: float) -> float:
|
83
|
-
return (1.0 - load_angle / 90.0) ** 2.0
|
84
|
-
|
85
|
-
|
86
|
-
@round_(ndigits=2)
|
87
|
-
def i_q(load_angle: float) -> float:
|
88
|
-
return i_c(load_angle)
|
89
|
-
|
90
|
-
|
91
|
-
@round_(ndigits=2)
|
92
|
-
def i_gamma(friction_angle: float, load_angle: float) -> float:
|
93
|
-
if isclose(friction_angle, 0.0):
|
94
|
-
return 1.0
|
95
|
-
return (1.0 - load_angle / friction_angle) ** 2.0
|
96
|
-
|
97
|
-
|
98
|
-
class VesicUltimateBearingCapacity(UltimateBearingCapacity):
|
99
|
-
r"""Ultimate bearing capacity for soils according to ``Vesic (1973)``.
|
100
|
-
|
101
|
-
:Equation:
|
102
|
-
|
103
|
-
.. math::
|
104
|
-
|
105
|
-
q_u = cN_c s_c d_c i_c + qN_q s_q d_q i_q
|
106
|
-
+ 0.5 \gamma B N_{\gamma} s_{\gamma} d_{\gamma} i_{\gamma}
|
107
|
-
|
108
|
-
.. list-table::
|
109
|
-
:widths: auto
|
110
|
-
:header-rows: 1
|
111
|
-
|
112
|
-
* - Symbol
|
113
|
-
- Description
|
114
|
-
- Unit
|
115
|
-
* - :math:`q_u`
|
116
|
-
- Ultimate bearing capacity
|
117
|
-
- :math:`kPa`
|
118
|
-
* - :math:`c`
|
119
|
-
- Cohesion of soil
|
120
|
-
- :math:`kPa`
|
121
|
-
* - :math:`q`
|
122
|
-
- Overburden pressure of soil
|
123
|
-
- :math:`kPa`
|
124
|
-
* - :math:`\gamma`
|
125
|
-
- Unit weight of soil
|
126
|
-
- :math:`kN/m^3`
|
127
|
-
* - :math:`B`
|
128
|
-
- Width of foundation footing
|
129
|
-
- :math:`m`
|
130
|
-
* - :math:`N_c`, :math:`N_q`, :math:`N_{\gamma}`
|
131
|
-
- Bearing capacity factors
|
132
|
-
- —
|
133
|
-
* - :math:`s_c`, :math:`s_q`, :math:`s_{\gamma}`
|
134
|
-
- Shape factors
|
135
|
-
- —
|
136
|
-
* - :math:`d_c`, :math:`d_q`, :math:`d_{\gamma}`
|
137
|
-
- Depth factors
|
138
|
-
- —
|
139
|
-
* - :math:`i_c`, :math:`i_q`, :math:`i_{\gamma}`
|
140
|
-
- Inclination factors
|
141
|
-
- —
|
142
|
-
"""
|
143
|
-
|
144
|
-
@property
|
145
|
-
def n_c(self) -> float:
|
146
|
-
r"""Bearing capacity factor :math:`N_c`.
|
147
|
-
|
148
|
-
:Equation:
|
149
|
-
|
150
|
-
.. math:: N_c = \cot(\phi) \left(N_q - 1\right)
|
151
|
-
"""
|
152
|
-
return n_c(self.friction_angle)
|
153
|
-
|
154
|
-
@property
|
155
|
-
def n_q(self) -> float:
|
156
|
-
r"""Bearing capacity factor :math:`N_q`.
|
157
|
-
|
158
|
-
:Equation:
|
159
|
-
|
160
|
-
.. math:: N_q = \tan^2\left(45 + \frac{\phi}{2}\right) \cdot
|
161
|
-
e^{\pi \tan(\phi)}
|
162
|
-
"""
|
163
|
-
return n_q(self.friction_angle)
|
164
|
-
|
165
|
-
@property
|
166
|
-
def n_gamma(self) -> float:
|
167
|
-
r"""Bearing capacity factor :math:`N_{\gamma}`.
|
168
|
-
|
169
|
-
:Equation:
|
170
|
-
|
171
|
-
.. math:: N_{\gamma} = 2(N_q + 1) \tan(\phi)
|
172
|
-
"""
|
173
|
-
return n_gamma(self.friction_angle)
|
174
|
-
|
175
|
-
@property
|
176
|
-
def s_c(self) -> float:
|
177
|
-
r"""Shape factor :math:`S_c`.
|
178
|
-
|
179
|
-
:Equation:
|
180
|
-
|
181
|
-
.. math::
|
182
|
-
|
183
|
-
s_c &= 1.0 \rightarrow \text{Strip footing}
|
184
|
-
|
185
|
-
s_c &= 1 + \dfrac{B}{L} \cdot \dfrac{N_q}{N_c} \rightarrow
|
186
|
-
\text{Rectangular footing}
|
187
|
-
|
188
|
-
s_c &= 1 + \dfrac{N_q}{N_c} \rightarrow
|
189
|
-
\text{Square or circular footing}
|
190
|
-
"""
|
191
|
-
width, length, shape = self.foundation_size.footing_params()
|
192
|
-
return s_c(self.friction_angle, width, length, shape)
|
193
|
-
|
194
|
-
@property
|
195
|
-
def s_q(self) -> float:
|
196
|
-
r"""Shape factor :math:`S_q`.
|
197
|
-
|
198
|
-
:Equation:
|
199
|
-
|
200
|
-
.. math::
|
201
|
-
|
202
|
-
s_q &= 1.0 \rightarrow \text{Strip footing}
|
203
|
-
|
204
|
-
s_q &= 1 + \dfrac{B}{L} \cdot \tan(\phi) \rightarrow
|
205
|
-
\text{Rectangular footing}
|
206
|
-
|
207
|
-
s_q &= 1 + \tan(\phi) \rightarrow \text{Square or circular footing}
|
208
|
-
"""
|
209
|
-
width, length, shape = self.foundation_size.footing_params()
|
210
|
-
return s_q(self.friction_angle, width, length, shape)
|
211
|
-
|
212
|
-
@property
|
213
|
-
def s_gamma(self) -> float:
|
214
|
-
r"""Shape factor :math:`S_{\gamma}`.
|
215
|
-
|
216
|
-
:Equation:
|
217
|
-
|
218
|
-
.. math::
|
219
|
-
|
220
|
-
s_{\gamma} &= 1.0 \rightarrow \text{Strip footing}
|
221
|
-
|
222
|
-
s_{\gamma} &= 1.0 - 0.4 \dfrac{B}{L} \rightarrow
|
223
|
-
\text{Rectangular footing}
|
224
|
-
|
225
|
-
s_{\gamma} &= 0.6 \rightarrow \text{Square or circular footing}
|
226
|
-
"""
|
227
|
-
width, length, shape = self.foundation_size.footing_params()
|
228
|
-
return s_gamma(width, length, shape)
|
229
|
-
|
230
|
-
@property
|
231
|
-
def d_c(self) -> float:
|
232
|
-
r"""Depth factor :math:`D_c`.
|
233
|
-
|
234
|
-
:Equation:
|
235
|
-
|
236
|
-
.. math:: d_c = 1 + 0.4 \dfrac{D_f}{B}
|
237
|
-
"""
|
238
|
-
depth, width = self.foundation_size.depth, self.foundation_size.width
|
239
|
-
return d_c(depth, width)
|
240
|
-
|
241
|
-
@property
|
242
|
-
def d_q(self) -> float:
|
243
|
-
r"""Depth factor :math:`D_q`.
|
244
|
-
|
245
|
-
:Equation:
|
246
|
-
|
247
|
-
.. math::
|
248
|
-
|
249
|
-
d_q = 1 + 2 \tan(\phi) \cdot (1 - \sin(\phi))^2
|
250
|
-
\cdot \dfrac{D_f}{B}
|
251
|
-
"""
|
252
|
-
depth, width = self.foundation_size.depth, self.foundation_size.width
|
253
|
-
return d_q(self.friction_angle, depth, width)
|
254
|
-
|
255
|
-
@property
|
256
|
-
def d_gamma(self) -> float:
|
257
|
-
r"""Depth factor :math:`D_{\gamma}`.
|
258
|
-
|
259
|
-
:Equation:
|
260
|
-
|
261
|
-
.. math:: d_{\gamma} = 1.0
|
262
|
-
"""
|
263
|
-
return d_gamma()
|
264
|
-
|
265
|
-
@property
|
266
|
-
def i_c(self) -> float:
|
267
|
-
r"""Inclination factor :math:`I_c`.
|
268
|
-
|
269
|
-
:Equation:
|
270
|
-
|
271
|
-
.. math:: i_c = (1 - \dfrac{\alpha}{90})^2
|
272
|
-
"""
|
273
|
-
return i_c(self.load_angle)
|
274
|
-
|
275
|
-
@property
|
276
|
-
def i_q(self) -> float:
|
277
|
-
r"""Inclination factor :math:`I_q`.
|
278
|
-
|
279
|
-
:Equation:
|
280
|
-
|
281
|
-
.. math:: i_q = (1 - \dfrac{\alpha}{90})^2
|
282
|
-
"""
|
283
|
-
return i_q(self.load_angle)
|
284
|
-
|
285
|
-
@property
|
286
|
-
def i_gamma(self) -> float:
|
287
|
-
r"""Inclination factor :math:`I_{\gamma}`.
|
288
|
-
|
289
|
-
:Equation:
|
290
|
-
|
291
|
-
.. math:: i_{\gamma} = \left(1 - \dfrac{\alpha}{\phi} \right)^2
|
292
|
-
"""
|
293
|
-
return i_gamma(self.friction_angle, self.load_angle)
|
geolysis/utils/exceptions.py
DELETED
@@ -1,65 +0,0 @@
|
|
1
|
-
from collections import UserString
|
2
|
-
from typing import Any
|
3
|
-
|
4
|
-
|
5
|
-
class ErrorMsg(UserString):
|
6
|
-
def __init__(self, *, param_name: str = None,
|
7
|
-
param_value: Any = None,
|
8
|
-
symbol: str = None,
|
9
|
-
param_value_bound: Any = None,
|
10
|
-
msg: str = None):
|
11
|
-
if not msg:
|
12
|
-
msg = f"{param_name}: {param_value!r} must be {symbol} {param_value_bound}"
|
13
|
-
|
14
|
-
super().__init__(msg)
|
15
|
-
|
16
|
-
self.param_name = param_name
|
17
|
-
self.param_value = param_value
|
18
|
-
self.symbol = symbol
|
19
|
-
self.param_value_bound = param_value_bound
|
20
|
-
|
21
|
-
@property
|
22
|
-
def msg(self):
|
23
|
-
return self.data
|
24
|
-
|
25
|
-
def __add__(self, other):
|
26
|
-
msg = self.msg + str(other)
|
27
|
-
return self.__class__(param_name=self.param_name,
|
28
|
-
param_value=self.param_value,
|
29
|
-
symbol=self.symbol,
|
30
|
-
param_value_bound=self.param_value_bound,
|
31
|
-
msg=msg)
|
32
|
-
|
33
|
-
def __radd__(self, other):
|
34
|
-
msg = str(other) + self.msg
|
35
|
-
return self.__class__(param_name=self.param_name,
|
36
|
-
param_value=self.param_value,
|
37
|
-
symbol=self.symbol,
|
38
|
-
param_value_bound=self.param_value_bound,
|
39
|
-
msg=msg)
|
40
|
-
|
41
|
-
def __repr__(self) -> str:
|
42
|
-
return f"ErrorMsg(param_name={self.param_name}, " \
|
43
|
-
f"param_value={self.param_value}, " \
|
44
|
-
f"symbol={self.symbol}, " \
|
45
|
-
f"param_value_bound={self.param_value_bound}, msg={self.msg!r})"
|
46
|
-
|
47
|
-
def to_dict(self) -> dict:
|
48
|
-
return {
|
49
|
-
"param_name": self.param_name,
|
50
|
-
"param_value": self.param_value,
|
51
|
-
"symbol": self.symbol,
|
52
|
-
"param_value_bound": self.param_value_bound,
|
53
|
-
"message": self.msg
|
54
|
-
}
|
55
|
-
|
56
|
-
|
57
|
-
class ValidationError(ValueError):
|
58
|
-
"""Exception raised when a validation error occurs."""
|
59
|
-
|
60
|
-
def __init__(self, error: ErrorMsg):
|
61
|
-
super().__init__(error)
|
62
|
-
self.error = error
|
63
|
-
|
64
|
-
def __repr__(self):
|
65
|
-
return f"ValidationError(error={self.error!r})"
|
geolysis/utils/validators.py
DELETED
@@ -1,119 +0,0 @@
|
|
1
|
-
"""validators"""
|
2
|
-
import operator
|
3
|
-
from functools import wraps
|
4
|
-
from typing import Any, Callable, Iterable, TypeAlias, List, Tuple, Sequence
|
5
|
-
|
6
|
-
from .exceptions import ErrorMsg, ValidationError
|
7
|
-
|
8
|
-
Number: TypeAlias = int | float
|
9
|
-
|
10
|
-
|
11
|
-
class _Validator:
|
12
|
-
|
13
|
-
def __init__(self, bound: Any, /, *,
|
14
|
-
symbol: str,
|
15
|
-
check: Callable,
|
16
|
-
exc_type: Callable,
|
17
|
-
err_msg: str):
|
18
|
-
self.bound = bound
|
19
|
-
self.symbol = symbol
|
20
|
-
self.check = check
|
21
|
-
self.exc_type = exc_type
|
22
|
-
self.err_msg = err_msg
|
23
|
-
|
24
|
-
def check_val(self, val, fname: str):
|
25
|
-
raise NotImplementedError
|
26
|
-
|
27
|
-
def __call__(self, fn):
|
28
|
-
@wraps(fn)
|
29
|
-
def wrapper(obj, val):
|
30
|
-
if isinstance(val, List | Tuple):
|
31
|
-
for v in val:
|
32
|
-
self.check_val(v, fn.__name__)
|
33
|
-
else:
|
34
|
-
self.check_val(val, fn.__name__)
|
35
|
-
|
36
|
-
fn(obj, val)
|
37
|
-
|
38
|
-
return wrapper
|
39
|
-
|
40
|
-
|
41
|
-
class _NumValidator(_Validator):
|
42
|
-
|
43
|
-
def check_val(self, v: Number, fname: str):
|
44
|
-
if not self.check(v, self.bound):
|
45
|
-
msg = ErrorMsg(msg=self.err_msg,
|
46
|
-
param_name=fname,
|
47
|
-
param_value=v,
|
48
|
-
symbol=self.symbol,
|
49
|
-
param_value_bound=self.bound)
|
50
|
-
raise self.exc_type(msg)
|
51
|
-
|
52
|
-
|
53
|
-
class _LenValidator(_Validator):
|
54
|
-
|
55
|
-
def __call__(self, fn):
|
56
|
-
@wraps(fn)
|
57
|
-
def wrapper(obj, val: Sequence):
|
58
|
-
if not self.check(len(val), self.bound):
|
59
|
-
msg = ErrorMsg(msg=self.err_msg,
|
60
|
-
param_name=fn.__name__,
|
61
|
-
param_value=val,
|
62
|
-
symbol=self.symbol,
|
63
|
-
param_value_bound=self.bound)
|
64
|
-
msg = "Length of " + msg
|
65
|
-
raise self.exc_type(msg)
|
66
|
-
fn(obj, val)
|
67
|
-
|
68
|
-
return wrapper
|
69
|
-
|
70
|
-
|
71
|
-
class _InValidator(_Validator):
|
72
|
-
def check_val(self, v, fname):
|
73
|
-
if not self.check(self.bound, v):
|
74
|
-
msg = ErrorMsg(msg=self.err_msg,
|
75
|
-
param_name=fname,
|
76
|
-
param_value=v,
|
77
|
-
symbol=self.symbol,
|
78
|
-
param_value_bound=self.bound)
|
79
|
-
raise self.exc_type(msg)
|
80
|
-
|
81
|
-
|
82
|
-
def in_(bound: Iterable[Any], /, *, exc_type=ValidationError, err_msg=None):
|
83
|
-
return _InValidator(bound, symbol="in", check=operator.contains,
|
84
|
-
exc_type=exc_type, err_msg=err_msg)
|
85
|
-
|
86
|
-
|
87
|
-
def min_len(bound: int, /, *, exc_type=ValidationError, err_msg=None):
|
88
|
-
return _LenValidator(bound, symbol=">=", check=operator.ge,
|
89
|
-
exc_type=exc_type, err_msg=err_msg)
|
90
|
-
|
91
|
-
|
92
|
-
def lt(bound: Number, /, *, exc_type=ValidationError, err_msg=None):
|
93
|
-
return _NumValidator(bound, symbol="<", check=operator.lt,
|
94
|
-
exc_type=exc_type, err_msg=err_msg)
|
95
|
-
|
96
|
-
|
97
|
-
def le(bound: Number, /, *, exc_type=ValidationError, err_msg=None):
|
98
|
-
return _NumValidator(bound, symbol="<=", check=operator.le,
|
99
|
-
exc_type=exc_type, err_msg=err_msg)
|
100
|
-
|
101
|
-
|
102
|
-
def eq(bound: Number, /, *, exc_type=ValidationError, err_msg=None):
|
103
|
-
return _NumValidator(bound, symbol="==", check=operator.eq,
|
104
|
-
exc_type=exc_type, err_msg=err_msg)
|
105
|
-
|
106
|
-
|
107
|
-
def ne(bound: Number, /, *, exc_type=ValidationError, err_msg=None):
|
108
|
-
return _NumValidator(bound, symbol="!=", check=operator.ne,
|
109
|
-
exc_type=exc_type, err_msg=err_msg)
|
110
|
-
|
111
|
-
|
112
|
-
def ge(bound: Number, /, *, exc_type=ValidationError, err_msg=None):
|
113
|
-
return _NumValidator(bound, symbol=">=", check=operator.ge,
|
114
|
-
exc_type=exc_type, err_msg=err_msg)
|
115
|
-
|
116
|
-
|
117
|
-
def gt(bound: Number, /, *, exc_type=ValidationError, err_msg=None):
|
118
|
-
return _NumValidator(bound, symbol=">", check=operator.gt,
|
119
|
-
exc_type=exc_type, err_msg=err_msg)
|
@@ -1,206 +0,0 @@
|
|
1
|
-
Metadata-Version: 2.4
|
2
|
-
Name: geolysis
|
3
|
-
Version: 0.9.0
|
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
|
-
Provides-Extra: dev
|
28
|
-
Requires-Dist: pytest; extra == "dev"
|
29
|
-
Requires-Dist: pytest-cov; extra == "dev"
|
30
|
-
Requires-Dist: coverage; extra == "dev"
|
31
|
-
Dynamic: license-file
|
32
|
-
|
33
|
-
<div align="center">
|
34
|
-
<img src="https://raw.githubusercontent.com/patrickboateng/geolysis/dev/docs/source/_static/branding/geolysislogo.svg"
|
35
|
-
alt="geolysislogo" width="75%" />
|
36
|
-
</div><br>
|
37
|
-
|
38
|
-
<div align="center">
|
39
|
-
|
40
|
-
[](https://pypi.org/project/geolysis/)
|
41
|
-
[](https://pepy.tech/projects/geolysis)
|
42
|
-
[](https://pypi.python.org/pypi/geolysis/)
|
43
|
-
[](https://opensource.org/license/mit/)
|
44
|
-
|
45
|
-

|
46
|
-
[](https://app.codacy.com/gh/patrickboateng/geolysis/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)
|
47
|
-
[](https://github.com/patrickboateng/geolysis/actions/workflows/unit-tests.yml)
|
48
|
-
[](https://geolysis.readthedocs.io/en/latest/?badge=latest)
|
49
|
-
|
50
|
-
</div>
|
51
|
-
|
52
|
-
`geolysis` is an open-source python package (library) for geotechnical analysis
|
53
|
-
and modeling. It offers tools for soil classification, Standard Penetration
|
54
|
-
Test (SPT) analysis, and bearing capacity estimation, among others.
|
55
|
-
|
56
|
-
The `geolysis` package is among three other projects, `geolysis.gui`,
|
57
|
-
`geolysis.excel`, and `geolysis.ai`.
|
58
|
-
|
59
|
-
Here are brief descriptions of the `geolysis` projects:
|
60
|
-
|
61
|
-
1. `geolysis`
|
62
|
-
|
63
|
-
A python package (library) which provides the core functionalities for
|
64
|
-
`geolysis.gui` and the `geolysis.excel` applications. Current features
|
65
|
-
provided by the `geolysis` package are shown in the table below.
|
66
|
-
|
67
|
-
<table>
|
68
|
-
<tr>
|
69
|
-
<td><strong>Soil Classification</strong></td>
|
70
|
-
<td>AASHTO Classification System</td>
|
71
|
-
</tr>
|
72
|
-
<tr>
|
73
|
-
<td></td>
|
74
|
-
<td>Unified Soil Classification System</td>
|
75
|
-
</tr>
|
76
|
-
<tr>
|
77
|
-
<td><strong>Standard Penetration Test (SPT) Analysis</strong></td>
|
78
|
-
<td>SPT Energy Correction</td>
|
79
|
-
</tr>
|
80
|
-
<tr>
|
81
|
-
<td></td>
|
82
|
-
<td>SPT Overburden Pressure Correction</td>
|
83
|
-
</tr>
|
84
|
-
<tr>
|
85
|
-
<td></td>
|
86
|
-
<td>SPT Dilatancy Correction</td>
|
87
|
-
</tr>
|
88
|
-
<tr>
|
89
|
-
<td></td>
|
90
|
-
<td>SPT N-Design Calculation</td>
|
91
|
-
</tr>
|
92
|
-
<tr>
|
93
|
-
<td><strong>Bearing Capacity Estimation</strong></td>
|
94
|
-
<td>Allowable Bearing Capacity Estimation</td>
|
95
|
-
</tr>
|
96
|
-
<tr>
|
97
|
-
<td></td>
|
98
|
-
<td>Ultimate Bearing Capacity Estimation</td>
|
99
|
-
</tr>
|
100
|
-
</table>
|
101
|
-
|
102
|
-
2. `geolysis.gui`
|
103
|
-
|
104
|
-
A graphical user interface that allows users to interact with the `geolysis`
|
105
|
-
package. Through this interface, users can view generated reports and
|
106
|
-
visualizations, such as Particle Size Distribution (PSD) curves, Atterberg
|
107
|
-
Limits plots, and Compaction curves, among others.
|
108
|
-
|
109
|
-
3. `geolysis.excel`
|
110
|
-
|
111
|
-
An add-in for Microsoft Excel that performs simple geotechnical analysis.
|
112
|
-
It offers some features similar to `geolysis.gui` within Microsoft Excel.
|
113
|
-
Below is an example of the Microsoft Excel addin.
|
114
|
-
|
115
|
-
<div align="center">
|
116
|
-
<img src="https://raw.githubusercontent.com/patrickboateng/geolysis/main/docs/_static/geolysis_excel_example.gif"
|
117
|
-
alt="geolysis excel example" width="100%" />
|
118
|
-
</div><br>
|
119
|
-
|
120
|
-
4. `geolysis.ai`
|
121
|
-
|
122
|
-
Offers machine learning models that are trained using geotechnical data.
|
123
|
-
|
124
|
-
## Project Structure
|
125
|
-
|
126
|
-
.
|
127
|
-
├── .github # GitHub Actions
|
128
|
-
├── docs # Documentation files
|
129
|
-
├── geolysis # Source files
|
130
|
-
├── tests # Automated tests
|
131
|
-
└── README.md
|
132
|
-
|
133
|
-
## Table of Contents
|
134
|
-
|
135
|
-
- [Installation](#installation)
|
136
|
-
- [Usage Example](#usage-example)
|
137
|
-
- [Documentation](#documentation)
|
138
|
-
- [Contributing](#contributing)
|
139
|
-
- [License](#license)
|
140
|
-
- [Contact](#contact)
|
141
|
-
|
142
|
-
## Installation
|
143
|
-
|
144
|
-
```shell
|
145
|
-
$ pip install geolysis
|
146
|
-
```
|
147
|
-
|
148
|
-
## Usage Example
|
149
|
-
|
150
|
-
```python
|
151
|
-
|
152
|
-
>>> from geolysis.soil_classifier import create_soil_classifier
|
153
|
-
>>> uscs_clf = create_soil_classifier(liquid_limit=34.1,
|
154
|
-
... plastic_limit=21.1,
|
155
|
-
... fines=47.88,
|
156
|
-
... sand=37.84,
|
157
|
-
... clf_type="USCS")
|
158
|
-
>>> clf = uscs_clf.classify()
|
159
|
-
>>> clf
|
160
|
-
SoilClf(symbol='SC', description='Clayey sands')
|
161
|
-
>>> clf.symbol
|
162
|
-
'SC'
|
163
|
-
>>> clf.description
|
164
|
-
'Clayey sands'
|
165
|
-
|
166
|
-
```
|
167
|
-
|
168
|
-
```python
|
169
|
-
|
170
|
-
>>> from geolysis.soil_classifier import create_soil_classifier
|
171
|
-
>>> aashto_clf = create_soil_classifier(liquid_limit=34.1,
|
172
|
-
... plastic_limit=21.1,
|
173
|
-
... fines=47.88,
|
174
|
-
... clf_type="AASHTO")
|
175
|
-
>>> clf = aashto_clf.classify()
|
176
|
-
>>> clf
|
177
|
-
SoilClf(symbol='A-6(4)', description='Clayey soils')
|
178
|
-
>>> clf.symbol
|
179
|
-
'A-6(4)'
|
180
|
-
>>> clf.description
|
181
|
-
'Clayey soils'
|
182
|
-
|
183
|
-
```
|
184
|
-
|
185
|
-
Check out more examples
|
186
|
-
[here](https://docs.geolysis.io/en/latest/user_guide/getting_started.html#quick-start)
|
187
|
-
|
188
|
-
## Documentation
|
189
|
-
|
190
|
-
Full documentation is available [here](https://docs.geolysis.io/en/latest/)
|
191
|
-
|
192
|
-
## Contributing
|
193
|
-
|
194
|
-
Contribution guidelines can be
|
195
|
-
found [here](https://docs.geolysis.io/en/latest/dev_guide/index.html)
|
196
|
-
|
197
|
-
## License
|
198
|
-
|
199
|
-
This project is licensed under the MIT License - see the
|
200
|
-
[LICENSE](https://github.com/patrickboateng/geolysis/blob/main/LICENSE.txt)
|
201
|
-
file for more details.
|
202
|
-
|
203
|
-
## Contact
|
204
|
-
|
205
|
-
For questions or feedback, please
|
206
|
-
contact [boatengpato.pb@gmail.com](mailto:boatengpato.pb@gmail.com)
|