geolysis 0.4.2__py3-none-any.whl → 0.4.4__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 +4 -2
- geolysis/bearing_capacity/__init__.py +0 -0
- geolysis/bearing_capacity/abc/__init__.py +0 -0
- geolysis/bearing_capacity/abc/cohl/__init__.py +206 -0
- geolysis/bearing_capacity/abc/cohl/bowles_abc.py +107 -0
- geolysis/bearing_capacity/abc/cohl/meyerhof_abc.py +107 -0
- geolysis/bearing_capacity/abc/cohl/terzaghi_abc.py +142 -0
- geolysis/bearing_capacity/ubc/__init__.py +337 -0
- geolysis/bearing_capacity/ubc/hansen_ubc.py +296 -0
- geolysis/bearing_capacity/ubc/terzaghi_ubc.py +258 -0
- geolysis/bearing_capacity/ubc/vesic_ubc.py +302 -0
- geolysis/foundation.py +165 -98
- geolysis/soil_classifier.py +160 -99
- geolysis/spt.py +88 -44
- geolysis/{utils.py → utils/__init__.py} +24 -2
- geolysis/utils/validators.py +80 -0
- {geolysis-0.4.2.dist-info → geolysis-0.4.4.dist-info}/METADATA +68 -76
- geolysis-0.4.4.dist-info/RECORD +21 -0
- {geolysis-0.4.2.dist-info → geolysis-0.4.4.dist-info}/WHEEL +1 -1
- geolysis/validators.py +0 -54
- geolysis-0.4.2.dist-info/RECORD +0 -11
- {geolysis-0.4.2.dist-info → geolysis-0.4.4.dist-info}/LICENSE.txt +0 -0
- {geolysis-0.4.2.dist-info → geolysis-0.4.4.dist-info}/top_level.txt +0 -0
geolysis/spt.py
CHANGED
@@ -1,15 +1,49 @@
|
|
1
|
+
""" Standard penetration test module.
|
2
|
+
|
3
|
+
Enums
|
4
|
+
=====
|
5
|
+
|
6
|
+
.. autosummary::
|
7
|
+
:toctree: _autosummary
|
8
|
+
:nosignatures:
|
9
|
+
|
10
|
+
HammerType
|
11
|
+
SamplerType
|
12
|
+
|
13
|
+
Classes
|
14
|
+
=======
|
15
|
+
|
16
|
+
.. autosummary::
|
17
|
+
:toctree: _autosummary
|
18
|
+
|
19
|
+
SPTNDesign
|
20
|
+
EnergyCorrection
|
21
|
+
GibbsHoltzOPC
|
22
|
+
BazaraaPeckOPC
|
23
|
+
PeckOPC
|
24
|
+
LiaoWhitmanOPC
|
25
|
+
SkemptonOPC
|
26
|
+
DilatancyCorrection
|
27
|
+
"""
|
1
28
|
import enum
|
2
29
|
from abc import abstractmethod
|
3
30
|
from typing import Final, Sequence
|
4
31
|
|
5
|
-
from
|
6
|
-
from geolysis.utils import isclose, log10, mean, round_, sqrt
|
32
|
+
from .utils import enum_repr, isclose, log10, mean, round_, sqrt, validators
|
7
33
|
|
8
|
-
__all__ = ["
|
9
|
-
"
|
34
|
+
__all__ = ["SPTNDesign",
|
35
|
+
"HammerType",
|
36
|
+
"SamplerType",
|
37
|
+
"EnergyCorrection",
|
38
|
+
"GibbsHoltzOPC",
|
39
|
+
"BazaraaPeckOPC",
|
40
|
+
"PeckOPC",
|
41
|
+
"LiaoWhitmanOPC",
|
42
|
+
"SkemptonOPC",
|
43
|
+
"DilatancyCorrection"]
|
10
44
|
|
11
45
|
|
12
|
-
class
|
46
|
+
class SPTNDesign:
|
13
47
|
""" SPT Design Calculations.
|
14
48
|
|
15
49
|
Due to uncertainty in field procedure in standard penetration test and also
|
@@ -21,35 +55,43 @@ class SPTDesign:
|
|
21
55
|
N-value from the base.
|
22
56
|
"""
|
23
57
|
|
24
|
-
def __init__(self,
|
58
|
+
def __init__(self, corrected_spt_n_values: Sequence[float]) -> None:
|
25
59
|
"""
|
26
|
-
:param
|
27
|
-
|
28
|
-
|
29
|
-
:type spt_n_values: Sequence[float]
|
60
|
+
:param corrected_spt_n_values: Corrected SPT N-values within the
|
61
|
+
foundation influence zone.
|
62
|
+
:type corrected_spt_n_values: Sequence[float]
|
30
63
|
"""
|
31
|
-
self.
|
64
|
+
self.corrected_spt_n_values = corrected_spt_n_values
|
65
|
+
|
66
|
+
@property
|
67
|
+
def corrected_spt_n_values(self) -> Sequence[float]:
|
68
|
+
return self._corrected_spt_n_values
|
69
|
+
|
70
|
+
@corrected_spt_n_values.setter
|
71
|
+
@validators.min_len(1)
|
72
|
+
def corrected_spt_n_values(self, val: Sequence[float]) -> None:
|
73
|
+
self._corrected_spt_n_values = val
|
32
74
|
|
33
75
|
@round_(ndigits=1)
|
34
76
|
def average_spt_n_design(self) -> float:
|
35
77
|
"""Calculates the average of the corrected SPT N-values within the
|
36
78
|
foundation influence zone.
|
37
79
|
"""
|
38
|
-
return mean(self.
|
80
|
+
return mean(self.corrected_spt_n_values)
|
39
81
|
|
40
82
|
@round_(ndigits=1)
|
41
83
|
def minimum_spt_n_design(self):
|
42
84
|
"""The lowest SPT N-value within the influence zone can be taken as the
|
43
85
|
:math:`N_{design}` as suggested by ``Terzaghi & Peck (1948)``.
|
44
86
|
"""
|
45
|
-
return min(self.
|
87
|
+
return min(self.corrected_spt_n_values)
|
46
88
|
|
47
89
|
@round_(ndigits=1)
|
48
90
|
def weighted_spt_n_design(self):
|
49
91
|
r"""Calculates the weighted average of the corrected SPT N-values
|
50
92
|
within the foundation influence zone.
|
51
93
|
|
52
|
-
|
94
|
+
:Equation:
|
53
95
|
|
54
96
|
.. math::
|
55
97
|
|
@@ -60,14 +102,16 @@ class SPTDesign:
|
|
60
102
|
sum_total = 0.0
|
61
103
|
sum_wgts = 0.0
|
62
104
|
|
63
|
-
for i,
|
105
|
+
for i, corr_spt_n_val in enumerate(self.corrected_spt_n_values,
|
106
|
+
start=1):
|
64
107
|
wgt = 1 / i ** 2
|
65
|
-
sum_total += wgt *
|
108
|
+
sum_total += wgt * corr_spt_n_val
|
66
109
|
sum_wgts += wgt
|
67
110
|
|
68
111
|
return sum_total / sum_wgts
|
69
112
|
|
70
113
|
|
114
|
+
@enum_repr
|
71
115
|
class HammerType(enum.StrEnum):
|
72
116
|
"""Enumeration of hammer types."""
|
73
117
|
AUTOMATIC = enum.auto()
|
@@ -77,6 +121,7 @@ class HammerType(enum.StrEnum):
|
|
77
121
|
DROP = PIN = enum.auto()
|
78
122
|
|
79
123
|
|
124
|
+
@enum_repr
|
80
125
|
class SamplerType(enum.StrEnum):
|
81
126
|
"""Enumeration of sampler types."""
|
82
127
|
STANDARD = enum.auto()
|
@@ -93,7 +138,7 @@ class EnergyCorrection:
|
|
93
138
|
the measured N-value to :math:`N_{60}` assuming 60% hammer energy being
|
94
139
|
transferred to the tip of the standard split spoon.
|
95
140
|
|
96
|
-
|
141
|
+
:Equation:
|
97
142
|
|
98
143
|
.. math::
|
99
144
|
|
@@ -102,6 +147,7 @@ class EnergyCorrection:
|
|
102
147
|
``ENERGY``: 0.6, 0.55, etc
|
103
148
|
"""
|
104
149
|
|
150
|
+
#: Hammer efficiency factors
|
105
151
|
HAMMER_EFFICIENCY_FACTORS = {HammerType.AUTOMATIC: 0.70,
|
106
152
|
HammerType.DONUT_1: 0.60,
|
107
153
|
HammerType.DONUT_2: 0.50,
|
@@ -109,11 +155,14 @@ class EnergyCorrection:
|
|
109
155
|
HammerType.DROP: 0.45,
|
110
156
|
HammerType.PIN: 0.45}
|
111
157
|
|
158
|
+
#: Sampler correction factors
|
112
159
|
SAMPLER_CORRECTION_FACTORS = {SamplerType.STANDARD: 1.00,
|
113
160
|
SamplerType.NON_STANDARD: 1.20}
|
114
161
|
|
115
|
-
def __init__(self, recorded_spt_n_value: int, *,
|
116
|
-
|
162
|
+
def __init__(self, recorded_spt_n_value: int, *,
|
163
|
+
energy_percentage=0.6,
|
164
|
+
borehole_diameter=65.0,
|
165
|
+
rod_length=3.0,
|
117
166
|
hammer_type=HammerType.DONUT_1,
|
118
167
|
sampler_type=SamplerType.STANDARD):
|
119
168
|
"""
|
@@ -136,7 +185,6 @@ class EnergyCorrection:
|
|
136
185
|
:param sampler_type: Sampler type, defaults to :attr:`SamplerType.STANDARD`
|
137
186
|
:type sampler_type: SamplerType, optional
|
138
187
|
"""
|
139
|
-
|
140
188
|
self.recorded_spt_n_value = recorded_spt_n_value
|
141
189
|
self.energy_percentage = energy_percentage
|
142
190
|
self.borehole_diameter = borehole_diameter
|
@@ -197,7 +245,6 @@ class EnergyCorrection:
|
|
197
245
|
corr = 1.05
|
198
246
|
else:
|
199
247
|
corr = 1.15
|
200
|
-
|
201
248
|
return corr
|
202
249
|
|
203
250
|
@property
|
@@ -216,7 +263,6 @@ class EnergyCorrection:
|
|
216
263
|
corr = 0.95
|
217
264
|
else:
|
218
265
|
corr = 1.00
|
219
|
-
|
220
266
|
return corr
|
221
267
|
|
222
268
|
def correction(self) -> float:
|
@@ -241,7 +287,7 @@ class OPC:
|
|
241
287
|
:param std_spt_n_value: SPT N-value standardized for field procedures.
|
242
288
|
:type std_spt_n_value: float
|
243
289
|
|
244
|
-
:param eop: Effective overburden pressure (:math:`
|
290
|
+
:param eop: Effective overburden pressure (:math:`kPa`).
|
245
291
|
:type eop: float
|
246
292
|
"""
|
247
293
|
self.std_spt_n_value = std_spt_n_value
|
@@ -260,7 +306,7 @@ class OPC:
|
|
260
306
|
def corrected_spt_n_value(self) -> float:
|
261
307
|
"""Corrected SPT N-value."""
|
262
308
|
corrected_spt = self.correction() * self.std_spt_n_value
|
263
|
-
# Corrected SPT should not be more
|
309
|
+
# Corrected SPT should not be more
|
264
310
|
# than 2 times the Standardized SPT
|
265
311
|
return min(corrected_spt, 2 * self.std_spt_n_value)
|
266
312
|
|
@@ -272,7 +318,7 @@ class OPC:
|
|
272
318
|
class GibbsHoltzOPC(OPC):
|
273
319
|
r"""Overburden Pressure Correction according to ``Gibbs & Holtz (1957)``.
|
274
320
|
|
275
|
-
|
321
|
+
:Equation:
|
276
322
|
|
277
323
|
.. math:: C_N = \dfrac{350}{\sigma_o + 70} \, \sigma_o \le 280kN/m^2
|
278
324
|
|
@@ -295,16 +341,14 @@ class GibbsHoltzOPC(OPC):
|
|
295
341
|
def correction(self) -> float:
|
296
342
|
"""SPT Correction."""
|
297
343
|
corr = 350.0 / (self.eop + 70.0)
|
298
|
-
if corr > 2.0
|
299
|
-
corr /= 2.0
|
300
|
-
return corr
|
344
|
+
return corr / 2.0 if corr > 2.0 else corr
|
301
345
|
|
302
346
|
|
303
347
|
class BazaraaPeckOPC(OPC):
|
304
348
|
r"""Overburden Pressure Correction according to ``Bazaraa (1967)``, and
|
305
349
|
also by ``Peck and Bazaraa (1969)``.
|
306
350
|
|
307
|
-
|
351
|
+
:Equation:
|
308
352
|
|
309
353
|
.. math::
|
310
354
|
|
@@ -316,7 +360,7 @@ class BazaraaPeckOPC(OPC):
|
|
316
360
|
C_N &= 1 \, , \, \sigma_o = 71.8kN/m^2
|
317
361
|
"""
|
318
362
|
|
319
|
-
#: Maximum effective overburden pressure
|
363
|
+
#: Maximum effective overburden pressure (:math:`kPa`).
|
320
364
|
STD_PRESSURE: Final = 71.8
|
321
365
|
|
322
366
|
@property
|
@@ -342,7 +386,7 @@ class BazaraaPeckOPC(OPC):
|
|
342
386
|
class PeckOPC(OPC):
|
343
387
|
r"""Overburden Pressure Correction according to ``Peck et al. (1974)``.
|
344
388
|
|
345
|
-
|
389
|
+
:Equation:
|
346
390
|
|
347
391
|
.. math:: C_N = 0.77 \log \left(\dfrac{2000}{\sigma_o} \right)
|
348
392
|
"""
|
@@ -364,7 +408,7 @@ class PeckOPC(OPC):
|
|
364
408
|
class LiaoWhitmanOPC(OPC):
|
365
409
|
r"""Overburden Pressure Correction according to ``Liao & Whitman (1986)``.
|
366
410
|
|
367
|
-
|
411
|
+
:Equation:
|
368
412
|
|
369
413
|
.. math:: C_N = \sqrt{\dfrac{100}{\sigma_o}}
|
370
414
|
"""
|
@@ -386,7 +430,7 @@ class LiaoWhitmanOPC(OPC):
|
|
386
430
|
class SkemptonOPC(OPC):
|
387
431
|
r"""Overburden Pressure Correction according to ``Skempton (1986)``.
|
388
432
|
|
389
|
-
|
433
|
+
:Equation:
|
390
434
|
|
391
435
|
.. math:: C_N = \dfrac{2}{1 + 0.01044 \cdot \sigma_o}
|
392
436
|
"""
|
@@ -412,7 +456,7 @@ class DilatancyCorrection:
|
|
412
456
|
correction, overburden pressure correction is applied first and then
|
413
457
|
dilatancy correction is applied.
|
414
458
|
|
415
|
-
|
459
|
+
:Equation:
|
416
460
|
|
417
461
|
.. math::
|
418
462
|
|
@@ -422,26 +466,26 @@ class DilatancyCorrection:
|
|
422
466
|
(N_1)_{60} &= (N_1)_{60} \, , \, (N_1)_{60} \le 15
|
423
467
|
"""
|
424
468
|
|
425
|
-
def __init__(self,
|
469
|
+
def __init__(self, corr_spt_n_value: float) -> None:
|
426
470
|
"""
|
427
|
-
:param
|
471
|
+
:param corr_spt_n_value: SPT N-value standardized for field procedures
|
428
472
|
and/or corrected for overburden pressure.
|
429
|
-
:type
|
473
|
+
:type corr_spt_n_value: float
|
430
474
|
"""
|
431
|
-
self.
|
475
|
+
self.corr_spt_n_value = corr_spt_n_value
|
432
476
|
|
433
477
|
@property
|
434
|
-
def
|
478
|
+
def corr_spt_n_value(self) -> float:
|
435
479
|
return self._std_spt_n_value
|
436
480
|
|
437
|
-
@
|
481
|
+
@corr_spt_n_value.setter
|
438
482
|
@validators.gt(0.0)
|
439
|
-
def
|
483
|
+
def corr_spt_n_value(self, val: float) -> None:
|
440
484
|
self._std_spt_n_value = val
|
441
485
|
|
442
486
|
@round_(ndigits=1)
|
443
487
|
def corrected_spt_n_value(self) -> float:
|
444
488
|
"""Corrected SPT N-value."""
|
445
|
-
if self.
|
446
|
-
return self.
|
447
|
-
return 15.0 + 0.5 * (self.
|
489
|
+
if self.corr_spt_n_value <= 15.0:
|
490
|
+
return self.corr_spt_n_value
|
491
|
+
return 15.0 + 0.5 * (self.corr_spt_n_value - 15.0)
|
@@ -4,8 +4,25 @@ from math import exp, inf, isclose, log10, pi, sqrt
|
|
4
4
|
from statistics import fmean as mean
|
5
5
|
from typing import Callable, SupportsRound
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
from . import validators
|
8
|
+
|
9
|
+
__all__ = ["enum_repr",
|
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
|
+
"validators"]
|
9
26
|
|
10
27
|
|
11
28
|
def deg2rad(x: float, /) -> float:
|
@@ -43,6 +60,11 @@ def arctan(x: float, /) -> float:
|
|
43
60
|
return rad2deg(math.atan(x))
|
44
61
|
|
45
62
|
|
63
|
+
def enum_repr(cls):
|
64
|
+
cls.__repr__ = lambda self: f"{self.value}"
|
65
|
+
return cls
|
66
|
+
|
67
|
+
|
46
68
|
def round_(ndigits: int | Callable[..., SupportsRound]) -> Callable:
|
47
69
|
"""A decorator that rounds the result of a callable to a specified number
|
48
70
|
of decimal places.
|
@@ -0,0 +1,80 @@
|
|
1
|
+
"""validators"""
|
2
|
+
import operator
|
3
|
+
from typing import Callable, TypeAlias
|
4
|
+
|
5
|
+
Number: TypeAlias = int | float
|
6
|
+
|
7
|
+
|
8
|
+
def _num_validator(bound: float, /, *,
|
9
|
+
compare_symbol: str,
|
10
|
+
compare_fn: Callable,
|
11
|
+
err_msg: str,
|
12
|
+
exc_type: Callable):
|
13
|
+
def dec(fn):
|
14
|
+
def wrapper(obj, val):
|
15
|
+
if not compare_fn(val, bound):
|
16
|
+
msg = f"{fn.__name__} must be {compare_symbol} {bound}"
|
17
|
+
raise exc_type(err_msg if err_msg else msg)
|
18
|
+
fn(obj, val)
|
19
|
+
|
20
|
+
return wrapper
|
21
|
+
|
22
|
+
return dec
|
23
|
+
|
24
|
+
|
25
|
+
def _len_validator(bound: float, /, *,
|
26
|
+
compare_symbol: str,
|
27
|
+
compare_fn: Callable,
|
28
|
+
err_msg: str,
|
29
|
+
exc_type: Callable):
|
30
|
+
def dec(fn):
|
31
|
+
def wrapper(obj, val):
|
32
|
+
_len = len(val)
|
33
|
+
if not compare_fn(_len, bound):
|
34
|
+
msg = f"Length of '{fn.__name__}' must be {compare_symbol} {bound}"
|
35
|
+
raise exc_type(err_msg if err_msg else msg)
|
36
|
+
return fn(obj, val)
|
37
|
+
|
38
|
+
return wrapper
|
39
|
+
|
40
|
+
return dec
|
41
|
+
|
42
|
+
|
43
|
+
def min_len(m_len: int, /, *, exc_type=ValueError, err_msg=None):
|
44
|
+
return _len_validator(m_len, compare_symbol=">=",
|
45
|
+
compare_fn=operator.ge,
|
46
|
+
err_msg=err_msg,
|
47
|
+
exc_type=exc_type)
|
48
|
+
|
49
|
+
|
50
|
+
# def lt(val: Number, /, *, exc_type=ValueError, err_msg=None):
|
51
|
+
# return _NumberValidator(val, "<", operator.lt, exc_type, err_msg)
|
52
|
+
|
53
|
+
|
54
|
+
def le(val: Number, /, *, exc_type=ValueError, err_msg=None):
|
55
|
+
return _num_validator(val, compare_symbol="<=",
|
56
|
+
compare_fn=operator.le,
|
57
|
+
err_msg=err_msg,
|
58
|
+
exc_type=exc_type)
|
59
|
+
|
60
|
+
|
61
|
+
# def eq(val: Number, /, *, exc_type=ValueError, err_msg=None):
|
62
|
+
# return _NumberValidator(val, "==", operator.eq, exc_type, err_msg)
|
63
|
+
|
64
|
+
|
65
|
+
# def ne(val: Number, /, *, exc_type=ValueError, err_msg=None):
|
66
|
+
# return _NumberValidator(val, "!=", operator.ne, exc_type, err_msg)
|
67
|
+
|
68
|
+
|
69
|
+
def ge(val: Number, /, *, exc_type=ValueError, err_msg=None):
|
70
|
+
return _num_validator(val, compare_symbol=">=",
|
71
|
+
compare_fn=operator.ge,
|
72
|
+
err_msg=err_msg,
|
73
|
+
exc_type=exc_type)
|
74
|
+
|
75
|
+
|
76
|
+
def gt(val: Number, /, *, exc_type=ValueError, err_msg=None):
|
77
|
+
return _num_validator(val, compare_symbol=">",
|
78
|
+
compare_fn=operator.gt,
|
79
|
+
err_msg=err_msg,
|
80
|
+
exc_type=exc_type)
|
@@ -1,15 +1,15 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: geolysis
|
3
|
-
Version: 0.4.
|
4
|
-
Summary: geolysis
|
3
|
+
Version: 0.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
|
7
|
-
Project-URL: Homepage, https://
|
8
|
-
Project-URL: Documentation, https://geolysis.
|
7
|
+
Project-URL: Homepage, https://docs.geolysis.io
|
8
|
+
Project-URL: Documentation, https://docs.geolysis.io
|
9
9
|
Project-URL: Repository, https://github.com/patrickboateng/geolysis
|
10
10
|
Project-URL: Discussions, https://github.com/patrickboateng/geolysis/discussions
|
11
11
|
Project-URL: Issue Tracker, https://github.com/patrickboateng/geolysis/issues
|
12
|
-
Keywords: geotechnical-engineering,soil-classification,
|
12
|
+
Keywords: geotechnical-engineering,soil-classification,bearing-capacity-analysis,standard-penetration-test-analysis
|
13
13
|
Classifier: Development Status :: 4 - Beta
|
14
14
|
Classifier: Intended Audience :: Developers
|
15
15
|
Classifier: Intended Audience :: Education
|
@@ -29,14 +29,15 @@ Requires-Dist: pytest; extra == "dev"
|
|
29
29
|
Requires-Dist: pytest-cov; extra == "dev"
|
30
30
|
Requires-Dist: coverage; extra == "dev"
|
31
31
|
|
32
|
-
<
|
32
|
+
<div align="center">
|
33
33
|
<img src="https://raw.githubusercontent.com/patrickboateng/geolysis/dev/docs/source/_static/branding/geolysislogo.svg"
|
34
34
|
alt="geolysislogo" width="75%" />
|
35
|
-
</
|
35
|
+
</div><br>
|
36
36
|
|
37
37
|
<div align="center">
|
38
38
|
|
39
39
|
[](https://pypi.org/project/geolysis/)
|
40
|
+
[](https://pepy.tech/projects/geolysis)
|
40
41
|
[](https://pypi.python.org/pypi/geolysis/)
|
41
42
|
[](https://opensource.org/license/mit/)
|
42
43
|
|
@@ -116,106 +117,97 @@ Here are brief descriptions of these projects:
|
|
116
117
|
|
117
118
|
## Installation
|
118
119
|
|
119
|
-
**_Note: Work on the latest update is still in progress, so the usage example
|
120
|
-
below
|
121
|
-
will not function if installed._**
|
122
|
-
|
123
120
|
```shell
|
124
|
-
|
121
|
+
$ pip install geolysis
|
125
122
|
```
|
126
123
|
|
127
124
|
## Usage Example
|
128
125
|
|
129
126
|
```python
|
130
127
|
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
...
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
...
|
140
|
-
clf_type = "USCS")
|
141
|
-
>> > clf = uscs_clf.classify()
|
142
|
-
>> > clf
|
128
|
+
>>> from geolysis.soil_classifier import create_soil_classifier
|
129
|
+
>>> uscs_clf = create_soil_classifier(liquid_limit=34.1,
|
130
|
+
... plastic_limit=21.1,
|
131
|
+
... fines=47.88,
|
132
|
+
... sand=37.84,
|
133
|
+
... clf_type="USCS")
|
134
|
+
>>> clf = uscs_clf.classify()
|
135
|
+
>>> clf
|
143
136
|
SoilClf(symbol='SC', description='Clayey sands')
|
144
|
-
|
137
|
+
>>> clf.symbol
|
145
138
|
'SC'
|
146
|
-
|
139
|
+
>>> clf.description
|
147
140
|
'Clayey sands'
|
148
141
|
|
149
142
|
```
|
150
143
|
|
151
144
|
```python
|
152
145
|
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
...
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
...
|
162
|
-
clf_type = "AASHTO")
|
163
|
-
>> > clf = aashto_clf.classify()
|
164
|
-
>> > clf
|
146
|
+
>>> from geolysis.soil_classifier import create_soil_classifier
|
147
|
+
>>> aashto_clf = create_soil_classifier(liquid_limit=34.1,
|
148
|
+
... plastic_limit=21.1,
|
149
|
+
... fines=47.88,
|
150
|
+
... sand=37.84, # Sand is optional for AASHTO classification
|
151
|
+
... clf_type="AASHTO")
|
152
|
+
>>> clf = aashto_clf.classify()
|
153
|
+
>>> clf
|
165
154
|
SoilClf(symbol='A-6(4)', description='Clayey soils')
|
166
|
-
|
155
|
+
>>> clf.symbol
|
167
156
|
'A-6(4)'
|
168
|
-
|
157
|
+
>>> clf.description
|
169
158
|
'Clayey soils'
|
170
159
|
|
171
160
|
```
|
172
161
|
|
162
|
+
Check out more examples
|
163
|
+
[here](https://docs.geolysis.io/en/latest/user_guide/getting_started.html#quick-start)
|
164
|
+
|
173
165
|
## Features
|
174
166
|
|
175
167
|
<table>
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
</
|
180
|
-
<
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
<
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
</
|
204
|
-
<
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
</tr>
|
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>
|
209
200
|
</table>
|
210
201
|
|
211
202
|
## Documentation
|
212
203
|
|
213
|
-
Full documentation is available [here](https://
|
214
|
-
|
215
|
-
**_Note: Work on the latest documentation is still ongoing._**
|
204
|
+
Full documentation is available [here](https://docs.geolysis.io/en/latest/)
|
216
205
|
|
217
206
|
## Contributing
|
218
207
|
|
208
|
+
Contribution guidelines can be
|
209
|
+
found [here](https://docs.geolysis.io/en/latest/dev_guide/index.html)
|
210
|
+
|
219
211
|
## License
|
220
212
|
|
221
213
|
This project is licensed under the MIT License - see the
|
@@ -0,0 +1,21 @@
|
|
1
|
+
geolysis/__init__.py,sha256=MyIge95T6RDI2zo-8gn3ewgjx3Bs986rvy55fek6UV4,122
|
2
|
+
geolysis/foundation.py,sha256=M6m8Pb7Bn7jdfD_77_RSXpAzZVpAiyQoWu1jJi_LVDE,10149
|
3
|
+
geolysis/soil_classifier.py,sha256=vvO4OrxcXAqLe3a3c8jhkfIZWV375BnyefCXHNhQAaU,26760
|
4
|
+
geolysis/spt.py,sha256=WI2KhaljsZ17qNhi99pFLswgZ167N1rR1udTcs_Czvc,14232
|
5
|
+
geolysis/bearing_capacity/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
6
|
+
geolysis/bearing_capacity/abc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
7
|
+
geolysis/bearing_capacity/abc/cohl/__init__.py,sha256=fqG8lxcFUWUpaP3kAk4zFLmFdSWfKuZsU1H6QM5z5nQ,6922
|
8
|
+
geolysis/bearing_capacity/abc/cohl/bowles_abc.py,sha256=2S0EFRW-C2s5e3MF8wz-9JWov7NzNuWqJ4HlSuqMrS4,4231
|
9
|
+
geolysis/bearing_capacity/abc/cohl/meyerhof_abc.py,sha256=wdWYn58NG7sYc-8ML-Yf7kS4PZnpOqghu6gwaH7UFsg,4197
|
10
|
+
geolysis/bearing_capacity/abc/cohl/terzaghi_abc.py,sha256=SRawtG8M0jGGMmzEqOvu_nV1tJ-8wJCJQo4GepDREd8,5448
|
11
|
+
geolysis/bearing_capacity/ubc/__init__.py,sha256=BgByVUK3t_EH5MXnEkd0IQOxqJqabYJZ02EoJq3zIac,11126
|
12
|
+
geolysis/bearing_capacity/ubc/hansen_ubc.py,sha256=DM3gnF6OueUDbQq4L82bR7i2vFusr2x1uh3vmYfAKk4,7222
|
13
|
+
geolysis/bearing_capacity/ubc/terzaghi_ubc.py,sha256=-mgSgqhceKaEzR0_zOQ2-wJTDPNpi-VQ3gg_lTxcqm0,6710
|
14
|
+
geolysis/bearing_capacity/ubc/vesic_ubc.py,sha256=41TKVQf_5wsHTEuR08u4FS-Rtdc2WomV1JC9fBubKVY,7482
|
15
|
+
geolysis/utils/__init__.py,sha256=Q3eBBOi_JKnydu6su-TswdI2bIT4PZ7V43NIIGaTj2w,2616
|
16
|
+
geolysis/utils/validators.py,sha256=ETvqwXtBFE17keDE5plYcSOztFNbSuJVqB6M6SmxBaQ,2556
|
17
|
+
geolysis-0.4.4.dist-info/LICENSE.txt,sha256=ap6sMs3lT7ICbEXBhgihwH1BTCVcjmCQkIkwVnil1Ak,1065
|
18
|
+
geolysis-0.4.4.dist-info/METADATA,sha256=8X06eJ1edfSgMt4htbXtylGUrsdtvIoLmTYYVRYFffY,7444
|
19
|
+
geolysis-0.4.4.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91
|
20
|
+
geolysis-0.4.4.dist-info/top_level.txt,sha256=9mnQgOaCRr11dtXff8X-q3FfXjRONd6kHseSy5q2y8g,9
|
21
|
+
geolysis-0.4.4.dist-info/RECORD,,
|