structuralcodes 0.3.1__py3-none-any.whl → 0.5.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.
- structuralcodes/__init__.py +1 -1
- structuralcodes/codes/ec2_2004/__init__.py +2 -0
- structuralcodes/codes/ec2_2004/shear.py +44 -4
- structuralcodes/codes/mc2010/__init__.py +40 -0
- structuralcodes/codes/mc2010/_concrete_punching.py +300 -388
- structuralcodes/codes/mc2010/_interface_concrete_steel_rebar.py +348 -0
- structuralcodes/core/base.py +1 -22
- structuralcodes/geometry/_circular.py +3 -10
- structuralcodes/geometry/_geometry.py +47 -92
- structuralcodes/geometry/_rectangular.py +3 -10
- structuralcodes/geometry/_reinforcement.py +8 -11
- structuralcodes/materials/__init__.py +2 -1
- structuralcodes/materials/basic/__init__.py +11 -0
- structuralcodes/materials/basic/_elastic.py +52 -0
- structuralcodes/materials/basic/_elasticplastic.py +75 -0
- structuralcodes/materials/basic/_generic.py +26 -0
- structuralcodes/materials/concrete/_concrete.py +1 -62
- structuralcodes/materials/concrete/_concreteEC2_2004.py +270 -224
- structuralcodes/materials/concrete/_concreteEC2_2023.py +246 -188
- structuralcodes/materials/concrete/_concreteMC2010.py +280 -235
- structuralcodes/materials/constitutive_laws/__init__.py +16 -15
- structuralcodes/materials/reinforcement/_reinforcement.py +0 -71
- structuralcodes/materials/reinforcement/_reinforcementEC2_2004.py +37 -2
- structuralcodes/materials/reinforcement/_reinforcementEC2_2023.py +34 -1
- structuralcodes/materials/reinforcement/_reinforcementMC2010.py +38 -2
- structuralcodes/sections/_generic.py +76 -21
- structuralcodes/sections/_rc_utils.py +15 -5
- structuralcodes/sections/section_integrators/_fiber_integrator.py +19 -11
- structuralcodes/sections/section_integrators/_marin_integrator.py +24 -19
- {structuralcodes-0.3.1.dist-info → structuralcodes-0.5.0.dist-info}/METADATA +3 -2
- {structuralcodes-0.3.1.dist-info → structuralcodes-0.5.0.dist-info}/RECORD +33 -27
- {structuralcodes-0.3.1.dist-info → structuralcodes-0.5.0.dist-info}/WHEEL +1 -1
- structuralcodes-0.5.0.dist-info/licenses/LICENSE +201 -0
structuralcodes/__init__.py
CHANGED
|
@@ -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
|
-
|
|
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,
|
|
@@ -81,6 +90,18 @@ from ._concrete_shear import (
|
|
|
81
90
|
v_rds,
|
|
82
91
|
)
|
|
83
92
|
from ._concrete_torsion import t_rd, t_rd_max, v_ed_ti
|
|
93
|
+
from ._interface_concrete_steel_rebar import (
|
|
94
|
+
K_tr,
|
|
95
|
+
eta_2,
|
|
96
|
+
f_stm,
|
|
97
|
+
s_1,
|
|
98
|
+
s_2,
|
|
99
|
+
s_3,
|
|
100
|
+
s_tau_bu_split,
|
|
101
|
+
tau_bmax,
|
|
102
|
+
tau_bu_split,
|
|
103
|
+
tau_yield,
|
|
104
|
+
)
|
|
84
105
|
from ._reinforcement_material_properties import (
|
|
85
106
|
epsud,
|
|
86
107
|
fyd,
|
|
@@ -162,6 +183,25 @@ __all__ = [
|
|
|
162
183
|
'tau_edi',
|
|
163
184
|
'tau_rdi_with_reinforcement',
|
|
164
185
|
'tau_rdi_without_reinforcement',
|
|
186
|
+
'eta_2',
|
|
187
|
+
'tau_bu_split',
|
|
188
|
+
'K_tr',
|
|
189
|
+
'tau_bmax',
|
|
190
|
+
's_1',
|
|
191
|
+
's_2',
|
|
192
|
+
's_3',
|
|
193
|
+
's_tau_bu_split',
|
|
194
|
+
'f_stm',
|
|
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',
|
|
165
205
|
]
|
|
166
206
|
|
|
167
207
|
__title__: str = 'fib Model Code 2010'
|