structuralcodes 0.0.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.

Potentially problematic release.


This version of structuralcodes might be problematic. Click here for more details.

Files changed (50) hide show
  1. structuralcodes/__init__.py +17 -0
  2. structuralcodes/codes/__init__.py +79 -0
  3. structuralcodes/codes/ec2_2004/__init__.py +133 -0
  4. structuralcodes/codes/ec2_2004/_concrete_material_properties.py +239 -0
  5. structuralcodes/codes/ec2_2004/_reinforcement_material_properties.py +104 -0
  6. structuralcodes/codes/ec2_2004/_section_7_3_crack_control.py +941 -0
  7. structuralcodes/codes/ec2_2004/annex_b_shrink_and_creep.py +257 -0
  8. structuralcodes/codes/ec2_2004/shear.py +506 -0
  9. structuralcodes/codes/ec2_2023/__init__.py +104 -0
  10. structuralcodes/codes/ec2_2023/_annexB_time_dependent.py +17 -0
  11. structuralcodes/codes/ec2_2023/_section5_materials.py +1160 -0
  12. structuralcodes/codes/ec2_2023/_section9_sls.py +325 -0
  13. structuralcodes/codes/mc2010/__init__.py +169 -0
  14. structuralcodes/codes/mc2010/_concrete_creep_and_shrinkage.py +704 -0
  15. structuralcodes/codes/mc2010/_concrete_interface_different_casting_times.py +104 -0
  16. structuralcodes/codes/mc2010/_concrete_material_properties.py +463 -0
  17. structuralcodes/codes/mc2010/_concrete_punching.py +543 -0
  18. structuralcodes/codes/mc2010/_concrete_shear.py +749 -0
  19. structuralcodes/codes/mc2010/_concrete_torsion.py +164 -0
  20. structuralcodes/codes/mc2010/_reinforcement_material_properties.py +105 -0
  21. structuralcodes/core/__init__.py +1 -0
  22. structuralcodes/core/_section_results.py +211 -0
  23. structuralcodes/core/base.py +260 -0
  24. structuralcodes/geometry/__init__.py +25 -0
  25. structuralcodes/geometry/_geometry.py +875 -0
  26. structuralcodes/geometry/_steel_sections.py +2155 -0
  27. structuralcodes/materials/__init__.py +9 -0
  28. structuralcodes/materials/concrete/__init__.py +82 -0
  29. structuralcodes/materials/concrete/_concrete.py +114 -0
  30. structuralcodes/materials/concrete/_concreteEC2_2004.py +477 -0
  31. structuralcodes/materials/concrete/_concreteEC2_2023.py +435 -0
  32. structuralcodes/materials/concrete/_concreteMC2010.py +494 -0
  33. structuralcodes/materials/constitutive_laws.py +979 -0
  34. structuralcodes/materials/reinforcement/__init__.py +84 -0
  35. structuralcodes/materials/reinforcement/_reinforcement.py +172 -0
  36. structuralcodes/materials/reinforcement/_reinforcementEC2_2004.py +103 -0
  37. structuralcodes/materials/reinforcement/_reinforcementEC2_2023.py +93 -0
  38. structuralcodes/materials/reinforcement/_reinforcementMC2010.py +98 -0
  39. structuralcodes/sections/__init__.py +23 -0
  40. structuralcodes/sections/_generic.py +1249 -0
  41. structuralcodes/sections/_reinforcement.py +115 -0
  42. structuralcodes/sections/section_integrators/__init__.py +14 -0
  43. structuralcodes/sections/section_integrators/_factory.py +41 -0
  44. structuralcodes/sections/section_integrators/_fiber_integrator.py +238 -0
  45. structuralcodes/sections/section_integrators/_marin_integration.py +47 -0
  46. structuralcodes/sections/section_integrators/_marin_integrator.py +222 -0
  47. structuralcodes/sections/section_integrators/_section_integrator.py +49 -0
  48. structuralcodes-0.0.1.dist-info/METADATA +40 -0
  49. structuralcodes-0.0.1.dist-info/RECORD +50 -0
  50. structuralcodes-0.0.1.dist-info/WHEEL +4 -0
@@ -0,0 +1,543 @@
1
+ """Covers punching in Model code 2010, 7.3.5.1 to 7.3.5.4."""
2
+
3
+ import warnings
4
+ from math import cos, pi, sin
5
+
6
+
7
+ def b_0(v_ed: float, v_prep_d_max: float) -> float:
8
+ """Gives the general output for b_0, shear-resisting control perimeter.
9
+
10
+ fib Model Code 2010, eq. (7.3-57).
11
+
12
+ Args:
13
+ V_ed (float): The acting shear force from the columns.
14
+ v_prep_d_max (float): The maximum shear force per unit length
15
+ perpendicular to the basic control parameter (Figure 7.3-24).
16
+
17
+ Returns:
18
+ float: The shear-resisting control perimeter, b_0.
19
+ """
20
+ return v_ed / v_prep_d_max
21
+
22
+
23
+ def m_ed(
24
+ v_ed: float,
25
+ e_u: float,
26
+ l_x: float,
27
+ l_y: float,
28
+ inner: bool,
29
+ edge_par: bool,
30
+ edge_per: bool,
31
+ corner: bool,
32
+ ) -> float:
33
+ """The average bending moment acting in the support strip.
34
+
35
+ fib Model Code 2010, eq. (7.3-76), (7.3-71), (7.3-72), (7.3-73)
36
+ and (7.3-74).
37
+
38
+ Args:
39
+ v_ed (float): The acting shear force from the columns.
40
+ e_u (float): Refers to the eccentricity of the resultant of shear
41
+ forces with respect to the centroid.
42
+ l_x (float): The width in x direction that the collumn carries.
43
+ l_y (float): The width in y direction that the collumn carries.
44
+ inner (bool): Is true only if the column is a inner column.
45
+ edge_par (bool): Is true only if the column is a edge column with
46
+ tension reinforcement parallel to the edge.
47
+ edge_per (bool): Is true only if the column is a edge column with
48
+ tension reinforcement perpendicular to the edge.
49
+ corner (bool): Is true only if the column is a corner column.
50
+
51
+ Returns:
52
+ float: The bending moment acting in the support strip regardless of the
53
+ position of the column.
54
+ """
55
+ r_sx = 0.22 * l_x
56
+ r_sy = 0.22 * l_y
57
+ l_min = min(l_x, l_y)
58
+ b_s = min(1.5 * (r_sx * r_sy) ** 0.5, l_min)
59
+ if inner:
60
+ return v_ed * ((1 / 8) + abs(e_u) / (2 * b_s))
61
+ if edge_par:
62
+ return max(v_ed * ((1 / 8) + e_u / (2 * b_s)), v_ed / 4)
63
+ if edge_per:
64
+ return v_ed * ((1 / 8) + e_u / (b_s))
65
+ if corner:
66
+ return max(v_ed * ((1 / 8) + e_u / (b_s)), v_ed / 2)
67
+ raise ValueError('Placement is not defined, only one needs to be True')
68
+
69
+
70
+ def psi_punching(
71
+ l_x: float,
72
+ l_y: float,
73
+ f_yd: float,
74
+ d: float,
75
+ e_s: float,
76
+ approx_lvl_p: float,
77
+ v_ed: float,
78
+ e_u: float,
79
+ inner: bool,
80
+ edge_par: bool,
81
+ edge_per: bool,
82
+ corner: bool,
83
+ m_rd: float,
84
+ x_direction: bool,
85
+ ) -> float:
86
+ """The rotation of the slab around the supported area.
87
+
88
+ fib Model Code 2010, eq. (7.3-70), (7.3-75) and (7.3-77).
89
+
90
+ Args:
91
+ l_x (float): The distance between two columns in x direction.
92
+ l_y (float): The distance between two columns in y direction.
93
+ f_yd (float): Design strength of reinforment steel in MPa.
94
+ d (float): The mean value of the effective depth in mm.
95
+ e_s (float): The E_modulus for steel in MPa.
96
+ approx_lvl_p (float): The approx level for punching.
97
+ v_ed (float): The acting shear force from the columns.
98
+ e_u (float): Refers to the eccentricity of the resultant of shear
99
+ forces with respect to the centroid.
100
+ inner (bool): Is true only if the column is a inner column.
101
+ edge_par (bool): Is true only if the column is a edge column with
102
+ tension reinforcement parallel to the edge.
103
+ edge_per (bool): Is true only if the column is a edge column with
104
+ tension reinforcement perpendicular to the edge.
105
+ corner (bool): Is true only if the column is a corner column.
106
+ m_rd (float): The design average strength per unit length in MPa.
107
+ m_pd: (float): The average decompresstion moment due to prestressing
108
+ in MPa.
109
+
110
+ Returns:
111
+ float: psi for the chosen approx level in punching.
112
+ """
113
+ r_s = max(0.22 * l_x, 0.22 * l_y)
114
+ if approx_lvl_p == 1:
115
+ psi = 1.5 * r_s * f_yd / (d * e_s)
116
+
117
+ elif approx_lvl_p == 2:
118
+ r_s = 0.22 * l_x if x_direction is True else 0.22 * l_y
119
+ psi = (1.5 * r_s * f_yd / (d * e_s)) * (
120
+ (m_ed(v_ed, e_u, l_x, l_y, inner, edge_par, edge_per, corner))
121
+ / (m_rd)
122
+ ) ** 1.5
123
+
124
+ return psi
125
+
126
+
127
+ def v_rdc_punching(
128
+ l_x: float,
129
+ l_y: float,
130
+ f_yd: float,
131
+ d: float,
132
+ e_s: float,
133
+ approx_lvl_p: float,
134
+ dg: float,
135
+ f_ck: float,
136
+ d_v: float,
137
+ v_ed: float,
138
+ e_u: float,
139
+ inner: bool,
140
+ edge_par: bool,
141
+ edge_per: bool,
142
+ corner: bool,
143
+ m_rd: float,
144
+ m_pd: float,
145
+ v_prep_d_max: float,
146
+ gamma_c: float = 1.5,
147
+ ) -> float:
148
+ """Punching resistance from the concrete.
149
+
150
+ fib Model Code 2010, eq. (7.3-61), (7.3-62) and (7.3-63).
151
+
152
+ Args:
153
+ l_x (float): The distance between two columns in x direction.
154
+ l_y (float): The distance between two columns in y direction.
155
+ f_yd (float): Design strength of reinforment steel in MPa.
156
+ d (float): The mean value of the effective depth in mm.
157
+ e_s (float): The E_modulus for steel in MPa.
158
+ approx_lvl_p (float): The approx level for punching.
159
+ dg (float): Maximum size of aggregate.
160
+ f_ck (float): Characteristic strength in MPa.
161
+ d_v (float): The effective depth considering support in mm.
162
+ v_ed (float): The acting shear force from the columns.
163
+ e_u (float): Refers to the eccentricity of the resultant of shear
164
+ forces with respect to the centroid.
165
+ inner (bool): Is true only if the column is a inner column.
166
+ edge_par (bool): Is true only if the column is a edge column with
167
+ tension reinforcement parallel to the edge.
168
+ edge_per (bool): Is true only if the column is a edge column with
169
+ tension reinforcement perpendicular to the edge.
170
+ corner (bool): Is true only if the column is a corner column.
171
+ m_rd (float): The design average strength per unit length in MPa.
172
+ m_pd: (float): The average decompresstion moment due to prestressing
173
+ in MPa.
174
+ v_prep_d_max (float): The maximum shear force per unit length
175
+ perpendicular to the basic control parameter (Figure 7.3-24).
176
+ gamma_c: Safety factor for concrete.
177
+
178
+ Returns:
179
+ float: v_rdc for punching with the right approx level.
180
+ """
181
+ k_dg = max(32 / (16 + dg), 0.75)
182
+ k_psi = min(
183
+ 1
184
+ / (
185
+ 1.5
186
+ + 0.9
187
+ * k_dg
188
+ * d
189
+ * psi_punching(
190
+ l_x,
191
+ l_y,
192
+ f_yd,
193
+ d,
194
+ e_s,
195
+ approx_lvl_p,
196
+ v_ed,
197
+ e_u,
198
+ inner,
199
+ edge_par,
200
+ edge_per,
201
+ corner,
202
+ m_rd,
203
+ m_pd,
204
+ )
205
+ ),
206
+ 0.6,
207
+ )
208
+ return k_psi * b_0(v_ed, v_prep_d_max) * d_v * (f_ck**0.5) / gamma_c
209
+
210
+
211
+ def v_rds_punching(
212
+ e_u: float,
213
+ b_u: float,
214
+ l_x: float,
215
+ l_y: float,
216
+ f_yd: float,
217
+ d: float,
218
+ e_s: float,
219
+ approx_lvl_p: float,
220
+ v_ed: float,
221
+ inner: bool,
222
+ edge_par: bool,
223
+ edge_per: bool,
224
+ corner: bool,
225
+ m_rd: float,
226
+ m_pd: float,
227
+ alpha: float,
228
+ f_bd: float,
229
+ f_ywk: float,
230
+ phi_w: float,
231
+ a_sw: float,
232
+ gamma_s: float,
233
+ ):
234
+ """The punching resistance from shear reinforcement.
235
+
236
+ fib Model Code 2010, eq. (7.3-64) and (7.3-65).
237
+
238
+ Args:
239
+ e_u (float): The ecentrisity of the result of shear forces
240
+ with respect to the centroid (Figure 7.3-27b).
241
+ b_u (float): The diamter of a circle with same surface as the region
242
+ inside the basic control perimeter (Figure 7.3-27b).
243
+ l_x (float): The distance between two columns in x direction.
244
+ l_y (float): The distance between two columns in y direction.
245
+ f_yd (float): Design strength of reinforment steel in MPa.
246
+ d (float): The mean value of the effective depth in mm.
247
+ e_s (float): The E_modulus for steel in MPa.
248
+ approx_lvl_p (float): The approx level for punching.
249
+ v_ed (float): The acting shear force from the columns.
250
+ inner (bool): Is true only if the column is a inner column.
251
+ edge_par (bool): Is true only if the column is a edge column with
252
+ tension reinforcement parallel to the edge.
253
+ edge_per (bool): Is true only if the column is a edge column with
254
+ tension reinforcement perpendicular to the edge.
255
+ corner (bool): Is true only if the column is a corner column.
256
+ m_rd (float): The design average strength per unit length in MPa.
257
+ m_pd: (float): The average decompresstion moment due to prestressing in
258
+ MPa.
259
+ alpha (float): Inclination of the stirrups in degrees.
260
+ f_bd (float): The design bond strength in MPa.
261
+ f_ywk (float): Characteristic yield strength of the shear reinforcement
262
+ in MPa.
263
+ phi_w (float): The diameter of the shear reinforcement.
264
+ a_sw (float): The area of the shear reinforcement in mm^2.
265
+ gamma_s (float): Safety factor for reinforcement.
266
+
267
+ Returns:
268
+ float: Punching resistance that comes from reinforcement.
269
+ """
270
+ f_ywd = f_ywk / gamma_s
271
+ k_e = 1 / (1 + e_u / b_u)
272
+ sigma_swd = min(
273
+ (
274
+ e_s
275
+ * psi_punching(
276
+ l_x,
277
+ l_y,
278
+ f_yd,
279
+ d,
280
+ e_s,
281
+ approx_lvl_p,
282
+ v_ed,
283
+ e_u,
284
+ inner,
285
+ edge_par,
286
+ edge_per,
287
+ corner,
288
+ m_rd,
289
+ m_pd,
290
+ )
291
+ / 6
292
+ )
293
+ * (sin(alpha * pi / 180) + cos(alpha * pi / 180))
294
+ * (sin(alpha * pi / 180) + f_bd * d / (f_ywd * phi_w)),
295
+ f_ywd,
296
+ )
297
+
298
+ if (a_sw * k_e * f_ywd) < 0.5 * v_ed:
299
+ warnings.warn(
300
+ """In order to ensure sufficent deformation capacity,
301
+ consider increasing the amount of punching shear reinforcement"""
302
+ )
303
+ return a_sw * k_e * sigma_swd * sin(alpha * pi / 180)
304
+
305
+
306
+ def v_rd_max_punching(
307
+ l_x: float,
308
+ l_y: float,
309
+ f_yd: float,
310
+ d: float,
311
+ e_s: float,
312
+ approx_lvl_p: float,
313
+ v_ed: float,
314
+ e_u: float,
315
+ inner: bool,
316
+ edge_par: bool,
317
+ edge_per: bool,
318
+ dg: float,
319
+ corner: bool,
320
+ m_rd: float,
321
+ m_pd: float,
322
+ v_prep_d_max: float,
323
+ d_v: float,
324
+ f_ck: float,
325
+ d_head: bool,
326
+ stirrups_compression: bool,
327
+ gamma_c: float = 1.5,
328
+ ) -> float:
329
+ """Finds the maximum value you can have for v_rd_punching.
330
+
331
+ fib Model Code 2010, eq. (7.3-68) and (7.3-69).
332
+
333
+ Args:
334
+ l_x (float): The distance between two columns in x direction.
335
+ l_y (float): The distance between two columns in y direction.
336
+ f_yd (float): Design strength of reinforment steel in MPa.
337
+ d (float): The mean value of the effective depth in mm.
338
+ e_s (float): The E_modulus for steel in MPa.
339
+ approx_lvl_p (float): The approx level for punching.
340
+ v_ed (float): The acting shear force from the columns.
341
+ e_u (float): Refers to the eccentricity of the resultant of shear
342
+ forces with respect to the centroid.
343
+ inner (bool): Is true only if the column is a inner column.
344
+ edge_par (bool): Is true only if the column is a edge column with
345
+ tension reinforcement parallel to the edge.
346
+ edge_per (bool): Is true only if the column is a edge column with
347
+ tension reinforcement perpendicular to the edge.
348
+ dg (float): Maximum size of aggregate.
349
+ corner (bool): Is true only if the column is a corner column.
350
+ m_rd (float): The design average strength per unit length in MPa.
351
+ m_pd: (float): The average decompresstion moment due to prestressing in
352
+ MPa.
353
+ v_prep_d_max (float): The maximum shear force per unit length
354
+ perpendiculerer to the basic control parameter (Figure 7.3-24).
355
+ d_v (float): The effective depth considering support in mm.
356
+ f_ck (float): Characteristic strength in MPa.
357
+ d_head (bool): True if diameter of heads is three times larger than.
358
+ stirrups_compression: (bool): Stirrups with sufficient length at
359
+ compression face, and bent on tension face.
360
+ gamma_c (float): Safety factor for concrete.
361
+
362
+ Return:
363
+ float: The maximum allowed punching resistance.
364
+ """
365
+ if d_head:
366
+ k_sys = 2.8
367
+ elif stirrups_compression:
368
+ k_sys = 2.4
369
+ else:
370
+ k_sys = 2
371
+
372
+ k_dg = max(32 / (16 + dg), 0.75)
373
+ k_psi = min(
374
+ 1
375
+ / (
376
+ 1.5
377
+ + 0.9
378
+ * k_dg
379
+ * d
380
+ * psi_punching(
381
+ l_x,
382
+ l_y,
383
+ f_yd,
384
+ d,
385
+ e_s,
386
+ approx_lvl_p,
387
+ v_ed,
388
+ e_u,
389
+ inner,
390
+ edge_par,
391
+ edge_per,
392
+ corner,
393
+ m_rd,
394
+ m_pd,
395
+ )
396
+ ),
397
+ 0.6,
398
+ )
399
+ return min(
400
+ (k_sys * k_psi * b_0(v_ed, v_prep_d_max) * d_v * f_ck**0.5) / gamma_c,
401
+ (b_0(v_ed, v_prep_d_max) * d_v * f_ck**0.5) / gamma_c,
402
+ )
403
+
404
+
405
+ def v_rd_punching(
406
+ e_u: float,
407
+ b_u: float,
408
+ l_x: float,
409
+ l_y: float,
410
+ f_yd: float,
411
+ d: float,
412
+ e_s: float,
413
+ approx_lvl_p: float,
414
+ v_ed: float,
415
+ inner: bool,
416
+ edge_par: bool,
417
+ edge_per: bool,
418
+ corner: bool,
419
+ m_rd: float,
420
+ m_pd: float,
421
+ alpha: float,
422
+ f_bd: float,
423
+ f_ywk: float,
424
+ phi_w: float,
425
+ a_sw: float,
426
+ dg: float,
427
+ f_ck: float,
428
+ d_v: float,
429
+ v_prep_d_max: float,
430
+ d_head: bool,
431
+ stirrups_compression: bool,
432
+ gamma_c: float = 1.5,
433
+ gamma_s: float = 1.15,
434
+ ) -> float:
435
+ """The total resistance for punching, both Vrd,c and Vrd,s.
436
+
437
+ fib Model Code 2010, eq. (7.3-60).
438
+
439
+ Args:
440
+ e_u (float): The ecentrisity of the result of shear forces with respect
441
+ to the centroid (Figure 7.3-27b).
442
+ b_u (float): The diamter of a circle with same surface as the region
443
+ inside the basic control perimeter (Figure 7.3-27b).
444
+ l_x (float): The distance between two columns in x direction.
445
+ l_y (float): The distance between two columns in y direction.
446
+ f_yd (float): Design strength of reinforment steel in MPa.
447
+ d (float): The mean value of the effective depth in mm.
448
+ e_s (float): The E_modulus for steel in MPa.
449
+ approx_lvl_p (float): The approx level for punching.
450
+ v_ed (float): The acting shear force from the columns.
451
+ inner (bool): Is true only if the column is a inner column.
452
+ edge_par (bool): Is true only if the column is a edge column with
453
+ tension reinforcement parallel to the edge.
454
+ edge_per (bool): Is true only if the column is a edge column with
455
+ tension reinforcement perpendicular to the edge.
456
+ corner (bool): Is true only if the column is a corner column.
457
+ m_rd (float): The design average strength per unit length in MPa.
458
+ m_pd: (float): The average decompresstion moment due to prestressing in
459
+ MPa.
460
+ alpha (float): Inclination of the stirrups in degrees.
461
+ f_bd (float): The design bond strength in MPa.
462
+ f_ywk (float): Characteristic yield strength of the shear reinforcement
463
+ in MPa.
464
+ phi_w (float): The diameter of the shear reinforcement.
465
+ a_sw (float): The area of the shear reinforcement in mm^2.
466
+ dg (float): Maximum size of aggregate.
467
+ f_ck (float): Characteristic strength in MPa.
468
+ d_v (float): The effective depth considering support in mm.
469
+ v_prep_d_max (float): The maximum shear force per unit length
470
+ perpendicular to the basic control parameter (Figure 7.3-24).
471
+
472
+ Return:
473
+ float: The maximum allowed punching resistance, regardless of values
474
+ from v_rdc and v_rds.
475
+ """
476
+ return min(
477
+ v_rdc_punching(
478
+ l_x,
479
+ l_y,
480
+ f_yd,
481
+ d,
482
+ e_s,
483
+ approx_lvl_p,
484
+ dg,
485
+ f_ck,
486
+ d_v,
487
+ v_ed,
488
+ e_u,
489
+ inner,
490
+ edge_par,
491
+ edge_per,
492
+ corner,
493
+ m_rd,
494
+ v_prep_d_max,
495
+ gamma_c,
496
+ )
497
+ + v_rds_punching(
498
+ e_u,
499
+ b_u,
500
+ l_x,
501
+ l_y,
502
+ f_yd,
503
+ d,
504
+ e_s,
505
+ approx_lvl_p,
506
+ v_ed,
507
+ inner,
508
+ edge_par,
509
+ edge_per,
510
+ corner,
511
+ m_rd,
512
+ m_pd,
513
+ alpha,
514
+ f_bd,
515
+ f_ywk,
516
+ phi_w,
517
+ a_sw,
518
+ gamma_s,
519
+ ),
520
+ v_rd_max_punching(
521
+ l_x,
522
+ l_y,
523
+ f_yd,
524
+ d,
525
+ e_s,
526
+ approx_lvl_p,
527
+ v_ed,
528
+ e_u,
529
+ inner,
530
+ edge_par,
531
+ edge_per,
532
+ dg,
533
+ corner,
534
+ m_rd,
535
+ m_pd,
536
+ v_prep_d_max,
537
+ d_v,
538
+ f_ck,
539
+ d_head,
540
+ stirrups_compression,
541
+ gamma_c,
542
+ ),
543
+ )