geolysis 0.3.0__py3-none-any.whl → 0.4.2__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.
@@ -1,495 +0,0 @@
1
- from abc import ABC, abstractmethod
2
-
3
- from geolysis.core.constants import UNIT
4
- from geolysis.core.foundation import FoundationSize
5
- from geolysis.core.utils import round_
6
-
7
- __all__ = [
8
- "BowlesABC4PadFoundation",
9
- "BowlesABC4MatFoundation",
10
- "MeyerhofABC4PadFoundation",
11
- "MeyerhofABC4MatFoundation",
12
- "TerzaghiABC4PadFoundation",
13
- "TerzaghiABC4MatFoundation",
14
- ]
15
-
16
- kPa = UNIT.kPa
17
-
18
-
19
- class SettlementError(ValueError):
20
- pass
21
-
22
-
23
- def _chk_settlement(tol_settlement: float, max_tol_settlement: float):
24
- if tol_settlement > max_tol_settlement:
25
- err_msg = "tol_settlement should not be greater than 25.4."
26
- raise SettlementError(err_msg)
27
-
28
-
29
- class _AbstractABC(ABC):
30
-
31
- MAX_TOL_SETTLEMENT = 25.4
32
-
33
- _unit = kPa
34
-
35
- def __init__(
36
- self,
37
- corrected_spt_number: float,
38
- tol_settlement: float,
39
- foundation_size: FoundationSize,
40
- ) -> None:
41
-
42
- self.corrected_spt_number = corrected_spt_number
43
- self.tol_settlement = tol_settlement
44
- self.foundation_size = foundation_size
45
-
46
- _chk_settlement(self.tol_settlement, self.MAX_TOL_SETTLEMENT)
47
-
48
- @property
49
- def unit(self) -> str:
50
- return self._unit
51
-
52
- @property
53
- def f_depth(self) -> float:
54
- """Depth of foundation."""
55
- return self.foundation_size.depth
56
-
57
- @f_depth.setter
58
- def f_depth(self, __val: float):
59
- self.foundation_size.depth = __val
60
-
61
- @property
62
- def f_width(self) -> float:
63
- """Width of foundation footing."""
64
- return self.foundation_size.width
65
-
66
- @f_width.setter
67
- def f_width(self, __val):
68
- self.foundation_size.width = __val
69
-
70
- @property
71
- def FD(self) -> float:
72
- """Depth factor."""
73
- return min(1 + 0.33 * self.f_depth / self.f_width, 1.33)
74
-
75
- @property
76
- def SR(self) -> float:
77
- """Settlement ratio."""
78
- return self.tol_settlement / self.MAX_TOL_SETTLEMENT
79
-
80
- @abstractmethod
81
- def bearing_capacity(self) -> float:
82
- raise NotImplementedError
83
-
84
-
85
- class BowlesABC4PadFoundation(_AbstractABC):
86
- r"""Allowable bearing capacity for mat foundation on cohesionless
87
- soils according to ``Bowles (1997)``.
88
-
89
- Parameters
90
- ----------
91
- corrected_spt_number : float
92
- Statistical average of corrected SPT N-value (55% energy with
93
- overburden pressure correction) within the foundation influence
94
- zone i.e ``0.5B`` to ``2B``.
95
- tol_settlement : float, mm
96
- Tolerable settlement.
97
- foundation_size : FoundationSize
98
- Size of foundation.
99
-
100
- Attributes
101
- ----------
102
- f_depth : float
103
- f_width : float
104
-
105
- Notes
106
- -----
107
- Allowable bearing capacity for ``isolated/pad/spread`` foundations:
108
-
109
- .. math::
110
-
111
- q_a(kPa) &= 19.16(N_1)_{55} f_d\left(\dfrac{S}{25.4}\right),
112
- \ B \ \le \ 1.2m
113
-
114
- q_a(kPa) &= 11.98(N_1)_{55}\left(\dfrac{3.28B + 1}{3.28B} \right)^2
115
- f_d \left(\dfrac{S}{25.4}\right), \ B \ \gt 1.2m
116
-
117
- Depth factor:
118
-
119
- .. math:: f_d = 1 + 0.33 \cdot \frac{D_f}{B} \le 1.33
120
-
121
- Examples
122
- --------
123
- >>> from geolysis.core.abc_4_cohl_soils import BowlesABC4PadFoundation
124
- >>> from geolysis.core.foundation import create_foundation, Shape
125
-
126
- >>> foundation_size = create_foundation(depth=1.5, thickness=0.3,
127
- ... width=1.2, footing_shape=Shape.SQUARE)
128
- >>> bowles_abc = BowlesABC4PadFoundation(corrected_spt_number=17.0,
129
- ... tol_settlement=20.0,
130
- ... foundation_size=foundation_size)
131
- >>> bowles_abc.bearing_capacity()
132
- 341.1083
133
- """
134
-
135
- @round_
136
- def bearing_capacity(self) -> float:
137
- """Return allowable bearing capacity for isolated foundation on
138
- cohesionless soils. |rarr| :math:`kN/m^2`
139
- """
140
- if self.f_width <= 1.2:
141
- return 19.16 * self.corrected_spt_number * self.FD * self.SR
142
-
143
- return (
144
- 11.98
145
- * self.corrected_spt_number
146
- * ((3.28 * self.f_width + 1) / (3.28 * self.f_width)) ** 2
147
- * self.FD
148
- * self.SR
149
- )
150
-
151
-
152
- class BowlesABC4MatFoundation(_AbstractABC):
153
- r"""Allowable bearing capacity for mat foundation on cohesionless
154
- soils according to ``Bowles (1997)``.
155
-
156
- Parameters
157
- ----------
158
- corrected_spt_number : float
159
- Statistical average of corrected SPT N-value (55% energy with
160
- overburden pressure correction) within the foundation influence
161
- zone i.e ``0.5B`` to ``2B``.
162
- tol_settlement : float, mm
163
- Tolerable settlement.
164
- foundation_size : FoundationSize
165
- Size of foundation.
166
-
167
- Attributes
168
- ----------
169
- f_depth : float
170
- f_width : float
171
-
172
- Notes
173
- -----
174
- Allowable bearing capacity for ``raft/mat`` foundations:
175
-
176
- .. math:: q_a(kPa) = 11.98(N_1)_{55}f_d\left(\dfrac{S}{25.4}\right)
177
-
178
- Depth factor:
179
-
180
- .. math:: f_d = 1 + 0.33 \cdot \frac{D_f}{B} \le 1.33
181
-
182
- Examples
183
- --------
184
- >>> from geolysis.core.abc_4_cohl_soils import BowlesABC4MatFoundation
185
- >>> from geolysis.core.foundation import create_foundation, Shape
186
-
187
- >>> foundation_size = create_foundation(depth=1.5, thickness=0.3,
188
- ... width=1.2, footing_shape=Shape.SQUARE)
189
- >>> bowles_abc = BowlesABC4MatFoundation(corrected_spt_number=17.0,
190
- ... tol_settlement=20.0,
191
- ... foundation_size=foundation_size)
192
- >>> bowles_abc.bearing_capacity()
193
- 213.2817
194
- """
195
-
196
- @round_
197
- def bearing_capacity(self) -> float:
198
- """Return allowable bearing capacity for raft foundation on
199
- cohesionless soils. |rarr| :math:`kN/m^2`
200
- """
201
- return 11.98 * self.corrected_spt_number * self.FD * self.SR
202
-
203
-
204
- class MeyerhofABC4PadFoundation(_AbstractABC):
205
- r"""Allowable bearing capacity for pad foundation on cohesionless
206
- soils according to ``Meyerhof (1956)``.
207
-
208
- Parameters
209
- ----------
210
- corrected_spt_number : float
211
- Average uncorrected SPT N-value (60% energy with dilatancy
212
- (water) correction if applicable) within the foundation influence
213
- zone i.e :math:`D_f` to :math:`D_f + 2B`
214
- tol_settlement : float, mm
215
- Tolerable settlement
216
- foundation_size : FoundationSize
217
- Size of foundation.
218
-
219
- Attributes
220
- ----------
221
- f_depth : float
222
- f_width : float
223
-
224
- Notes
225
- -----
226
- Allowable bearing capacity for ``isolated/pad/spread`` foundations:
227
-
228
- .. math::
229
-
230
- q_a(kPa) &= 12N f_d\left(\dfrac{S}{25.4}\right), \ B \ \le 1.2m
231
-
232
- q_a(kPa) &= 8N\left(\dfrac{3.28B + 1}{3.28B} \right)^2 f_d\left(
233
- \dfrac{S}{25.4}\right), \ B \ \gt 1.2m
234
-
235
- Depth factor:
236
-
237
- .. math:: f_d = 1 + 0.33 \cdot \frac{D_f}{B} \le 1.33
238
-
239
- Examples
240
- --------
241
- >>> from geolysis.core.abc_4_cohl_soils import MeyerhofABC4PadFoundation
242
- >>> from geolysis.core.foundation import create_foundation, Shape
243
-
244
- >>> foundation_size = create_foundation(depth=1.5, thickness=0.3,
245
- ... width=1.2, footing_shape=Shape.SQUARE)
246
- >>> meyerhof_abc = MeyerhofABC4PadFoundation(corrected_spt_number=17.0,
247
- ... tol_settlement=20.0,
248
- ... foundation_size=foundation_size)
249
- >>> meyerhof_abc.bearing_capacity()
250
- 213.6378
251
- """
252
-
253
- @round_
254
- def bearing_capacity(self) -> float:
255
- """Return allowable bearing capacity for isolated foundation on
256
- cohesionless soils. |rarr| :math:`kN/m^2`
257
- """
258
-
259
- if self.f_width <= 1.2:
260
- return 12 * self.corrected_spt_number * self.FD * self.SR
261
-
262
- return (
263
- 8
264
- * self.corrected_spt_number
265
- * ((3.28 * self.f_width + 1) / (3.28 * self.f_width)) ** 2
266
- * self.FD
267
- * self.SR
268
- )
269
-
270
-
271
- class MeyerhofABC4MatFoundation(_AbstractABC):
272
- r"""Allowable bearing capacity for mat foundation on cohesionless
273
- soils according to ``Meyerhof (1956)``.
274
-
275
- Parameters
276
- ----------
277
- corrected_spt_number : float
278
- Average uncorrected SPT N-value (60% energy with dilatancy
279
- (water) correction if applicable) within the foundation influence
280
- zone i.e :math:`D_f` to :math:`D_f + 2B`
281
- tol_settlement : float, mm
282
- Tolerable settlement
283
- foundation_size : FoundationSize
284
- Size of foundation.
285
-
286
- Attributes
287
- ----------
288
- f_depth : float
289
- f_width : float
290
-
291
- Notes
292
- -----
293
- Allowable bearing capacity for ``raft/mat`` foundations:
294
-
295
- .. math:: q_a(kPa) = 8 N f_d\left(\dfrac{S}{25.4}\right)
296
-
297
- Depth factor:
298
-
299
- .. math:: f_d = 1 + 0.33 \cdot \frac{D_f}{B} \le 1.33
300
-
301
- Examples
302
- --------
303
- >>> from geolysis.core.abc_4_cohl_soils import MeyerhofABC4MatFoundation
304
- >>> from geolysis.core.foundation import create_foundation, Shape
305
-
306
- >>> foundation_size = create_foundation(depth=1.5, thickness=0.3,
307
- ... width=1.2, footing_shape=Shape.SQUARE)
308
- >>> meyerhof_abc = MeyerhofABC4MatFoundation(corrected_spt_number=17.0,
309
- ... tol_settlement=20.0,
310
- ... foundation_size=foundation_size)
311
- >>> meyerhof_abc.bearing_capacity()
312
- 142.4252
313
- """
314
-
315
- @round_
316
- def bearing_capacity(self) -> float:
317
- """Return allowable bearing capacity for raft foundation on
318
- cohesionless soils. |rarr| :math:`kN/m^2`
319
- """
320
- return 8 * self.corrected_spt_number * self.FD * self.SR
321
-
322
-
323
- class TerzaghiABC4PadFoundation(_AbstractABC):
324
- r"""Allowable bearing capacity for pad foundation on cohesionless
325
- soils according to ``Terzaghi & Peck (1948)``.
326
-
327
- Parameters
328
- ----------
329
- corrected_spt_number : float
330
- Lowest (or average) uncorrected SPT N-value (60% energy) within
331
- the foundation influence zone i.e :math:`D_f` to :math:`D_f + 2B`
332
- tol_settlement : float, mm
333
- Tolerable settlement.
334
- water_depth : float, m
335
- Depth of water below ground surface.
336
- foundation_size : float
337
- Size of foundation.
338
-
339
- Attributes
340
- ----------
341
- f_depth : float
342
- f_width : float
343
-
344
- Notes
345
- -----
346
- Allowable bearing capacity for ``isolated/pad/spread`` foundations:
347
-
348
- .. math::
349
-
350
- q_a(kPa) &= 12N \dfrac{1}{c_w f_d}\left(\dfrac{S}{25.4}\right),
351
- \ B \ \le 1.2m
352
-
353
- q_a(kPa) &= 8N\left(\dfrac{3.28B + 1}{3.28B} \right)^2\dfrac{1}
354
- {c_w f_d}\left(\dfrac{S}{25.4}\right), \ B \ \gt 1.2m
355
-
356
- Depth factor:
357
-
358
- .. math:: f_d = 1 + 0.25 \cdot \frac{D_f}{B} \le 1.25
359
-
360
- Water correction for surface footing:
361
-
362
- .. math:: c_w = 2 - \frac{D_w}{2B} \le 2
363
-
364
- Water correction for fully submerged footing :math:`D_w \le D_f`
365
-
366
- .. math:: c_w = 2 - \frac{D_f}{2B} \le 2
367
-
368
- Examples
369
- --------
370
- >>> from geolysis.core.abc_4_cohl_soils import TerzaghiABC4PadFoundation
371
- >>> from geolysis.core.foundation import create_foundation, Shape
372
-
373
- >>> foundation_size = create_foundation(depth=1.5, thickness=0.3,
374
- ... width=1.2, footing_shape=Shape.SQUARE)
375
- >>> terzaghi_abc = TerzaghiABC4PadFoundation(corrected_spt_number=17,
376
- ... tol_settlement=20.0, water_depth=1.2,
377
- ... foundation_size=foundation_size)
378
- >>> terzaghi_abc.bearing_capacity()
379
- 93.4574
380
- """
381
-
382
- def __init__(
383
- self,
384
- corrected_spt_number: float,
385
- tol_settlement: float,
386
- water_depth: float,
387
- foundation_size: FoundationSize,
388
- ):
389
- super().__init__(corrected_spt_number, tol_settlement, foundation_size)
390
-
391
- self.water_depth = water_depth
392
-
393
- @property
394
- @round_
395
- def FD(self):
396
- """Depth factor.
397
-
398
- :meta private:
399
- """
400
-
401
- return min(1 + 0.25 * self.f_depth / self.f_width, 1.25)
402
-
403
- @property
404
- @round_
405
- def CW(self):
406
- """Water correction factor.
407
-
408
- :meta private:
409
- """
410
- if self.water_depth <= self.f_depth:
411
- corr = 2 - self.f_depth / (2 * self.f_width)
412
- else:
413
- corr = 2 - self.water_depth / (2 * self.f_width)
414
- return min(corr, 2)
415
-
416
- @round_
417
- def bearing_capacity(self) -> float:
418
- """Return allowable bearing capacity for isolated foundation on
419
- cohesionless soils. |rarr| :math:`kN/m^2`
420
- """
421
- correction = 1 / (self.CW * self.FD)
422
-
423
- if self.f_width <= 1.2:
424
- return 12 * self.corrected_spt_number * correction * self.SR
425
-
426
- return (
427
- 8
428
- * self.corrected_spt_number
429
- * ((3.28 * self.f_width + 1) / (3.28 * self.f_width)) ** 2
430
- * correction
431
- * self.SR
432
- )
433
-
434
-
435
- class TerzaghiABC4MatFoundation(TerzaghiABC4PadFoundation):
436
- r"""Allowable bearing capacity for mat foundation on cohesionless soils
437
- according to ``Terzaghi & Peck (1948)``.
438
-
439
- Parameters
440
- ----------
441
- corrected_spt_number : float
442
- Lowest (or average) uncorrected SPT N-value (60% energy) within
443
- the foundation influence zone i.e :math:`D_f` to :math:`D_f + 2B`
444
- tol_settlement : float, mm
445
- Tolerable settlement.
446
- water_depth : float, m
447
- Depth of water below ground surface.
448
- foundation_size : float
449
- Size of foundation.
450
-
451
- Attributes
452
- ----------
453
- f_depth : float
454
- f_width : float
455
-
456
- Notes
457
- -----
458
- Allowable bearing capacity for ``isolated/pad/spread`` foundations:
459
-
460
- .. math:: q_a(kPa) = 8N\dfrac{1}{c_w f_d}\left(\dfrac{S}{25.4}\right)
461
-
462
- Depth factor:
463
-
464
- .. math:: f_d = 1 + 0.25 \cdot \frac{D_f}{B} \le 1.25
465
-
466
- Water correction for surface footing:
467
-
468
- .. math:: c_w = 2 - \frac{D_w}{2B} \le 2
469
-
470
- Water correction for fully submerged footing :math:`D_w \le D_f`
471
-
472
- .. math:: c_w = 2 - \frac{D_f}{2B} \le 2
473
-
474
- Examples
475
- --------
476
- >>> from geolysis.core.abc_4_cohl_soils import TerzaghiABC4MatFoundation
477
- >>> from geolysis.core.foundation import create_foundation, Shape
478
-
479
- >>> foundation_size = create_foundation(depth=1.5, thickness=0.3,
480
- ... width=1.2, footing_shape=Shape.SQUARE)
481
- >>> terzaghi_abc = TerzaghiABC4MatFoundation(corrected_spt_number=17,
482
- ... tol_settlement=20.0, water_depth=1.2,
483
- ... foundation_size=foundation_size)
484
- >>> terzaghi_abc.bearing_capacity()
485
- 62.3049
486
- """
487
-
488
- @round_
489
- def bearing_capacity(self) -> float:
490
- """Return allowable bearing capacity for raft foundation on
491
- cohesionless soils. |rarr| :math:`kN/m^2`
492
- """
493
- return (
494
- 8 * self.corrected_spt_number * (1 / (self.CW * self.FD)) * self.SR
495
- )
@@ -1,47 +0,0 @@
1
- from dataclasses import dataclass
2
-
3
- __all__ = ["DECIMAL_PLACES", "ERROR_TOL", "UNIT"]
4
-
5
- #: The number of decimal places to round mathematical
6
- #: values returned from functions (or methods) to.
7
- DECIMAL_PLACES: int = 4
8
-
9
- #: Allowable error tolerance for mathematical values
10
- #: returned from functions (or methods).
11
- ERROR_TOL: float = 0.01
12
-
13
-
14
- @dataclass(init=False)
15
- class UNIT:
16
- """Physical units manager for values returned by various functions
17
- (or methods) that returns a float.
18
-
19
- Notes
20
- -----
21
- These units are compatible with the `pint <https://pint.readthedocs.io/en/stable/index.html>`_
22
- library unit system.
23
- """
24
-
25
- #: meter
26
- m = "meter"
27
-
28
- #: millimeter
29
- mm = "millimeter"
30
-
31
- #: kilogram
32
- kg = "kilogram"
33
-
34
- #: degree
35
- deg = "degrees"
36
-
37
- #: square meter
38
- m2 = "m**2"
39
-
40
- #: cubic meter
41
- m3 = "m**3"
42
-
43
- #: kilo Pascal
44
- kPa = "kPa"
45
-
46
- #: kilo Newton per cubic meter
47
- kN_m3 = "kN/m**3"