structuralcodes 0.4.0__py3-none-any.whl → 0.6.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.

Potentially problematic release.


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

Files changed (52) hide show
  1. structuralcodes/__init__.py +1 -1
  2. structuralcodes/codes/ec2_2004/__init__.py +2 -0
  3. structuralcodes/codes/ec2_2004/shear.py +44 -4
  4. structuralcodes/codes/mc2010/__init__.py +18 -0
  5. structuralcodes/codes/mc2010/_concrete_creep_and_shrinkage.py +2 -2
  6. structuralcodes/codes/mc2010/_concrete_punching.py +300 -388
  7. structuralcodes/core/base.py +116 -5
  8. structuralcodes/geometry/__init__.py +2 -8
  9. structuralcodes/geometry/_circular.py +3 -10
  10. structuralcodes/geometry/_geometry.py +58 -114
  11. structuralcodes/geometry/_rectangular.py +3 -10
  12. structuralcodes/geometry/_reinforcement.py +9 -14
  13. structuralcodes/geometry/profiles/__init__.py +19 -0
  14. structuralcodes/geometry/profiles/_base_profile.py +305 -0
  15. structuralcodes/geometry/profiles/_common_functions.py +194 -0
  16. structuralcodes/geometry/profiles/_he.py +192 -0
  17. structuralcodes/geometry/profiles/_ipe.py +130 -0
  18. structuralcodes/geometry/profiles/_ipn.py +329 -0
  19. structuralcodes/geometry/profiles/_ub.py +264 -0
  20. structuralcodes/geometry/profiles/_ubp.py +227 -0
  21. structuralcodes/geometry/profiles/_uc.py +276 -0
  22. structuralcodes/geometry/profiles/_upn.py +315 -0
  23. structuralcodes/materials/__init__.py +2 -1
  24. structuralcodes/materials/basic/__init__.py +11 -0
  25. structuralcodes/materials/basic/_elastic.py +69 -0
  26. structuralcodes/materials/basic/_elasticplastic.py +92 -0
  27. structuralcodes/materials/basic/_generic.py +43 -0
  28. structuralcodes/materials/concrete/__init__.py +3 -0
  29. structuralcodes/materials/concrete/_concrete.py +10 -1
  30. structuralcodes/materials/concrete/_concreteEC2_2004.py +14 -0
  31. structuralcodes/materials/concrete/_concreteEC2_2023.py +14 -0
  32. structuralcodes/materials/concrete/_concreteMC2010.py +19 -0
  33. structuralcodes/materials/constitutive_laws/__init__.py +3 -0
  34. structuralcodes/materials/constitutive_laws/_elasticplastic.py +2 -2
  35. structuralcodes/materials/constitutive_laws/_initial_strain.py +130 -0
  36. structuralcodes/materials/reinforcement/__init__.py +6 -0
  37. structuralcodes/materials/reinforcement/_reinforcement.py +10 -1
  38. structuralcodes/materials/reinforcement/_reinforcementEC2_2004.py +15 -1
  39. structuralcodes/materials/reinforcement/_reinforcementEC2_2023.py +15 -1
  40. structuralcodes/materials/reinforcement/_reinforcementMC2010.py +15 -1
  41. structuralcodes/sections/_generic.py +53 -14
  42. structuralcodes/sections/_rc_utils.py +15 -5
  43. structuralcodes/sections/section_integrators/__init__.py +3 -1
  44. structuralcodes/sections/section_integrators/_fiber_integrator.py +19 -11
  45. structuralcodes/sections/section_integrators/_marin_integrator.py +25 -20
  46. {structuralcodes-0.4.0.dist-info → structuralcodes-0.6.0.dist-info}/METADATA +2 -2
  47. structuralcodes-0.6.0.dist-info/RECORD +77 -0
  48. structuralcodes/geometry/_steel_sections.py +0 -2155
  49. structuralcodes-0.4.0.dist-info/RECORD +0 -63
  50. /structuralcodes/{sections/section_integrators → core}/_marin_integration.py +0 -0
  51. {structuralcodes-0.4.0.dist-info → structuralcodes-0.6.0.dist-info}/WHEEL +0 -0
  52. {structuralcodes-0.4.0.dist-info → structuralcodes-0.6.0.dist-info}/licenses/LICENSE +0 -0
@@ -3,7 +3,7 @@
3
3
  from . import codes, core, geometry, materials, sections
4
4
  from .codes import get_design_codes, set_design_code, set_national_annex
5
5
 
6
- __version__ = '0.4.0'
6
+ __version__ = '0.6.0'
7
7
 
8
8
  __all__ = [
9
9
  'set_design_code',
@@ -78,6 +78,7 @@ from ._section_7_3_crack_control import (
78
78
  )
79
79
  from .shear import (
80
80
  Asw_max,
81
+ Asw_s_required,
81
82
  VEdmax_unreinf,
82
83
  VRdc,
83
84
  VRdc_prin_stress,
@@ -90,6 +91,7 @@ __all__ = [
90
91
  'As_min_2',
91
92
  'As_min_p',
92
93
  'Asw_max',
94
+ 'Asw_s_required',
93
95
  'alpha_e',
94
96
  'eps_sm_eps_cm',
95
97
  'hc_eff',
@@ -112,8 +112,8 @@ def _theta(theta: float, cot_min: float = 1.0, cot_max: float = 2.5) -> None:
112
112
  'Wrong value for theta is chosen. Theta has '
113
113
  f'to be chosen such that 1/tan(theta) lies between '
114
114
  f'{cot_min} and {cot_max}. This corresponds to an angle '
115
- f'between {round(math.degrees(math.atan(1/cot_min)),2)} '
116
- f'and {round(math.degrees(math.atan(1/cot_max)),2)} '
115
+ f'between {round(math.degrees(math.atan(1 / cot_min)), 2)} '
116
+ f'and {round(math.degrees(math.atan(1 / cot_max)), 2)} '
117
117
  f'degrees, respectively. Current angle is set at {theta}'
118
118
  ' degrees.'
119
119
  )
@@ -152,7 +152,7 @@ def alpha_cw(Ned: float, Ac: float, fcd: float) -> float:
152
152
  value = 2.5 * (1 - sigma_cp / fcd)
153
153
  else:
154
154
  raise ValueError(
155
- f'sigma_cp/fcd={sigma_cp/fcd}. Prestress has to be smaller'
155
+ f'sigma_cp/fcd={sigma_cp / fcd}. Prestress has to be smaller'
156
156
  ' than design compressive strength.'
157
157
  )
158
158
  return value
@@ -400,6 +400,46 @@ def VRds(
400
400
  )
401
401
 
402
402
 
403
+ # Equation (6.8 & 6.13) -> Reinforcement ratio isolated from the equation.
404
+ def Asw_s_required(
405
+ Ved: float,
406
+ z: float,
407
+ theta: float,
408
+ fywd: float,
409
+ alpha: float = 90.0,
410
+ ) -> float:
411
+ """Calculate the required shear reinforcement.
412
+
413
+ EN 1992-1-1 (2005). Eq. (6.13)
414
+
415
+ Args:
416
+ Ved (float): The shear force in N.
417
+ z (float): The inner lever arm of internal forces in mm.
418
+ theta (float): The angle of the compression strut in degrees.
419
+ fywd (float): The design strength of the shear reinforcement steel in
420
+ MPa.
421
+
422
+ Keyword Args:
423
+ alpha (float): The angle of the shear reinforcement with respect to the
424
+ neutral axis in degrees. Default value = 90 degrees.
425
+
426
+ Returns:
427
+ float: The amount of required shear reinforcement in mm2/mm.
428
+
429
+ Raises:
430
+ ValueError: When theta < 21.8 degrees or theta > 45 degrees.
431
+ """
432
+ theta = math.radians(theta)
433
+ alpha = math.radians(alpha)
434
+ return (
435
+ Ved
436
+ / z
437
+ / fywd
438
+ / (1 / math.tan(theta) + 1.0 / math.tan(alpha))
439
+ / math.sin(alpha)
440
+ )
441
+
442
+
403
443
  # Equation (6.9 & 6.14)
404
444
  # For alpha == 90 degrees, Equation (6.14) reduces to Equation (6.9).
405
445
  def VRdmax(
@@ -480,7 +520,7 @@ def Asw_max(
480
520
  bw (float): The smallest width of the cross-section in tension in mm.
481
521
  s (float): The centre-to-centre distance of the shear reinforcement in
482
522
  mm.
483
- fwyd (float): The design strength of the shear reinforcement steel in
523
+ fywd (float): The design strength of the shear reinforcement steel in
484
524
  MPa.
485
525
  NEd (float): The normal force in the cross-section due to loading or
486
526
  prestress (NEd > 0 for compression) in N.
@@ -55,8 +55,17 @@ from ._concrete_material_properties import (
55
55
  )
56
56
  from ._concrete_punching import (
57
57
  b_0,
58
+ b_s,
59
+ b_sr,
60
+ k_dg,
61
+ k_psi,
58
62
  m_ed,
59
63
  psi_punching,
64
+ psi_punching_level_one,
65
+ psi_punching_level_three,
66
+ psi_punching_level_two,
67
+ r_s,
68
+ sigma_swd,
60
69
  v_rd_max_punching,
61
70
  v_rd_punching,
62
71
  v_rdc_punching,
@@ -184,6 +193,15 @@ __all__ = [
184
193
  's_tau_bu_split',
185
194
  'f_stm',
186
195
  'tau_yield',
196
+ 'b_s',
197
+ 'b_sr',
198
+ 'k_dg',
199
+ 'k_psi',
200
+ 'r_s',
201
+ 'psi_punching_level_one',
202
+ 'psi_punching_level_two',
203
+ 'psi_punching_level_three',
204
+ 'sigma_swd',
187
205
  ]
188
206
 
189
207
  __title__: str = 'fib Model Code 2010'
@@ -95,13 +95,13 @@ def _check_initial_stress(sigma: float, fcm: float) -> None:
95
95
  raise ValueError(
96
96
  'The stress level exceeds the range of application.'
97
97
  'Maximum allowable stress is 0.6*fcm. Current stress level '
98
- f'is {round(abs(sigma)/fcm, 3)}*fcm.'
98
+ f'is {round(abs(sigma) / fcm, 3)}*fcm.'
99
99
  )
100
100
  if abs(sigma) > 0.4 * fcm:
101
101
  warnings.warn(
102
102
  'Initial stress is too high to consider the '
103
103
  'concrete as an aging linear visco-elastic material: '
104
- f'sigma = {round(abs(sigma)/fcm,3)}*fcm > 0.4*fcm. Nonlinear'
104
+ f'sigma = {round(abs(sigma) / fcm, 3)}*fcm > 0.4*fcm. Nonlinear'
105
105
  ' creep calculations are performed according to subclause '
106
106
  '5.1.9.4.3 (d) of the fib Model Code 2010 to account for '
107
107
  'large compressive stresses.'