structuralcodes 0.4.0__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 +18 -0
- structuralcodes/codes/mc2010/_concrete_punching.py +300 -388
- structuralcodes/core/base.py +1 -1
- 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/reinforcement/_reinforcementEC2_2004.py +1 -1
- structuralcodes/materials/reinforcement/_reinforcementEC2_2023.py +1 -1
- structuralcodes/materials/reinforcement/_reinforcementMC2010.py +1 -1
- structuralcodes/sections/_generic.py +53 -14
- 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.4.0.dist-info → structuralcodes-0.5.0.dist-info}/METADATA +1 -1
- {structuralcodes-0.4.0.dist-info → structuralcodes-0.5.0.dist-info}/RECORD +26 -22
- {structuralcodes-0.4.0.dist-info → structuralcodes-0.5.0.dist-info}/WHEEL +0 -0
- {structuralcodes-0.4.0.dist-info → structuralcodes-0.5.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"""Covers punching in Model code 2010, 7.3.5.1 to 7.3.5.4."""
|
|
2
2
|
|
|
3
|
+
import typing as t
|
|
3
4
|
import warnings
|
|
4
5
|
from math import cos, pi, sin
|
|
5
6
|
|
|
@@ -7,7 +8,7 @@ from math import cos, pi, sin
|
|
|
7
8
|
def b_0(v_ed: float, v_prep_d_max: float) -> float:
|
|
8
9
|
"""Gives the general output for b_0, shear-resisting control perimeter.
|
|
9
10
|
|
|
10
|
-
fib Model Code 2010,
|
|
11
|
+
fib Model Code 2010, Eq. (7.3-57).
|
|
11
12
|
|
|
12
13
|
Args:
|
|
13
14
|
V_ed (float): The acting shear force from the columns.
|
|
@@ -20,11 +21,31 @@ def b_0(v_ed: float, v_prep_d_max: float) -> float:
|
|
|
20
21
|
return v_ed / v_prep_d_max
|
|
21
22
|
|
|
22
23
|
|
|
24
|
+
def b_s(
|
|
25
|
+
l_x: float,
|
|
26
|
+
l_y: float,
|
|
27
|
+
) -> float:
|
|
28
|
+
"""The width of the support strip for calculating m_ed.
|
|
29
|
+
|
|
30
|
+
fib Model Code 2010, Eq. (7.3-76).
|
|
31
|
+
|
|
32
|
+
Args:
|
|
33
|
+
l_x (float): The width in x direction that the collumn carries.
|
|
34
|
+
l_y (float): The width in y direction that the collumn carries.
|
|
35
|
+
|
|
36
|
+
Returns:
|
|
37
|
+
float: The width of the support strip for calculating m_ed.
|
|
38
|
+
"""
|
|
39
|
+
r_sx = 0.22 * l_x # see MC2010 7.3.5.3
|
|
40
|
+
r_sy = 0.22 * l_y # see MC2010 7.3.5.3
|
|
41
|
+
l_min = min(l_x, l_y)
|
|
42
|
+
return min(1.5 * (r_sx * r_sy) ** 0.5, l_min)
|
|
43
|
+
|
|
44
|
+
|
|
23
45
|
def m_ed(
|
|
24
46
|
v_ed: float,
|
|
25
47
|
e_u: float,
|
|
26
|
-
|
|
27
|
-
l_y: float,
|
|
48
|
+
b_s: float,
|
|
28
49
|
inner: bool,
|
|
29
50
|
edge_par: bool,
|
|
30
51
|
edge_per: bool,
|
|
@@ -32,15 +53,13 @@ def m_ed(
|
|
|
32
53
|
) -> float:
|
|
33
54
|
"""The average bending moment acting in the support strip.
|
|
34
55
|
|
|
35
|
-
fib Model Code 2010,
|
|
36
|
-
and (7.3-74).
|
|
56
|
+
fib Model Code 2010, Eq. (7.3-71), (7.3-72), (7.3-73) and (7.3-74).
|
|
37
57
|
|
|
38
58
|
Args:
|
|
39
59
|
v_ed (float): The acting shear force from the columns.
|
|
40
60
|
e_u (float): Refers to the eccentricity of the resultant of shear
|
|
41
61
|
forces with respect to the centroid.
|
|
42
|
-
|
|
43
|
-
l_y (float): The width in y direction that the collumn carries.
|
|
62
|
+
b_s (float): The width of the support strip for calculating m_ed.
|
|
44
63
|
inner (bool): Is true only if the column is a inner column.
|
|
45
64
|
edge_par (bool): Is true only if the column is a edge column with
|
|
46
65
|
tension reinforcement parallel to the edge.
|
|
@@ -52,10 +71,6 @@ def m_ed(
|
|
|
52
71
|
float: The bending moment acting in the support strip regardless of the
|
|
53
72
|
position of the column.
|
|
54
73
|
"""
|
|
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
74
|
if inner:
|
|
60
75
|
return v_ed * ((1 / 8) + abs(e_u) / (2 * b_s))
|
|
61
76
|
if edge_par:
|
|
@@ -67,296 +82,346 @@ def m_ed(
|
|
|
67
82
|
raise ValueError('Placement is not defined, only one needs to be True')
|
|
68
83
|
|
|
69
84
|
|
|
70
|
-
def
|
|
85
|
+
def b_sr(
|
|
86
|
+
l_x: float,
|
|
87
|
+
l_y: float,
|
|
88
|
+
) -> float:
|
|
89
|
+
"""The width of the support strip in the radial direction.
|
|
90
|
+
|
|
91
|
+
fib Model Code 2010, 7.3.5.3.
|
|
92
|
+
|
|
93
|
+
Args:
|
|
94
|
+
l_x (float): The width in x direction that the collumn carries.
|
|
95
|
+
l_y (float): The width in y direction that the collumn carries.
|
|
96
|
+
|
|
97
|
+
Returns:
|
|
98
|
+
float: The width of the support strip in the radial direction.
|
|
99
|
+
"""
|
|
100
|
+
return min(l_x, l_y)
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def r_s(
|
|
104
|
+
l_x: float,
|
|
105
|
+
l_y: float,
|
|
106
|
+
x_direction: bool,
|
|
107
|
+
is_level_three_approximation: bool = False,
|
|
108
|
+
column_edge_or_corner: bool = False,
|
|
109
|
+
b_sr: t.Optional[float] = None,
|
|
110
|
+
) -> float:
|
|
111
|
+
"""The position where the radial bending moment is zero with respect to the
|
|
112
|
+
support axis.
|
|
113
|
+
|
|
114
|
+
fib Model Code 2010, 7.3.5.3 and Eq. (7.3-78) for Level III of
|
|
115
|
+
Approximation.
|
|
116
|
+
|
|
117
|
+
Args:
|
|
118
|
+
l_x (float): The width in x direction that the collumn carries.
|
|
119
|
+
l_y (float): The width in y direction that the collumn carries.
|
|
120
|
+
x_direction (bool): True if the radial bending moment is zero in the x
|
|
121
|
+
direction, False if it is in the y direction.
|
|
122
|
+
column_edge_or_corner (bool): True if the column is an edge or corner
|
|
123
|
+
column, False if it is an inner column. To be used for Level III of
|
|
124
|
+
Approximation.
|
|
125
|
+
b_sr (float): The width of the support strip in the radial direction.
|
|
126
|
+
|
|
127
|
+
Returns:
|
|
128
|
+
float: The position where the radial bending moment is zero with
|
|
129
|
+
respect to the support axis.
|
|
130
|
+
"""
|
|
131
|
+
r_s = 0.22 * l_x if x_direction is True else 0.22 * l_y
|
|
132
|
+
|
|
133
|
+
if column_edge_or_corner and is_level_three_approximation:
|
|
134
|
+
if b_sr is None:
|
|
135
|
+
raise ValueError(
|
|
136
|
+
'b_sr is not defined for Level 3 of Approximation'
|
|
137
|
+
)
|
|
138
|
+
return max(r_s, 0.67 * b_sr)
|
|
139
|
+
return r_s
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
def psi_punching_level_one(
|
|
71
143
|
l_x: float,
|
|
72
144
|
l_y: float,
|
|
73
145
|
f_yd: float,
|
|
74
|
-
|
|
146
|
+
d_eff: float,
|
|
75
147
|
e_s: float,
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
148
|
+
) -> float:
|
|
149
|
+
"""The psi value for the punching level one.
|
|
150
|
+
|
|
151
|
+
fib Model Code 2010, Eq. (7.3-70).
|
|
152
|
+
|
|
153
|
+
Args:
|
|
154
|
+
r_s (float): The position where the radial bending moment is zero with
|
|
155
|
+
respect to the support axis.
|
|
156
|
+
f_yd (float): Design strength of reinforment steel in MPa.
|
|
157
|
+
d_eff (float): The mean value of the effective depth in mm.
|
|
158
|
+
e_s (float): The E_modulus for steel in MPa.
|
|
159
|
+
|
|
160
|
+
Returns:
|
|
161
|
+
float: The psi value for the punching level one.
|
|
162
|
+
"""
|
|
163
|
+
r_s = max(0.22 * l_x, 0.22 * l_y) # MC2010 7.3.5.3 - Unique for (7.3-70)
|
|
164
|
+
return 1.5 * r_s * f_yd / (d_eff * e_s)
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
def psi_punching_level_two(
|
|
168
|
+
r_s: float,
|
|
169
|
+
f_yd: float,
|
|
170
|
+
d_eff: float,
|
|
171
|
+
e_s: float,
|
|
172
|
+
m_ed: float,
|
|
83
173
|
m_rd: float,
|
|
84
|
-
|
|
174
|
+
m_Pd: float = 0,
|
|
85
175
|
) -> float:
|
|
86
|
-
"""The
|
|
176
|
+
"""The psi value for the punching level two.
|
|
87
177
|
|
|
88
|
-
fib Model Code 2010,
|
|
178
|
+
fib Model Code 2010, Eq. (7.3-75) and (7.3-77).
|
|
89
179
|
|
|
90
180
|
Args:
|
|
91
|
-
|
|
92
|
-
|
|
181
|
+
r_s (float): The position where the radial bending moment is zero with
|
|
182
|
+
respect to the support axis.
|
|
93
183
|
f_yd (float): Design strength of reinforment steel in MPa.
|
|
94
|
-
|
|
184
|
+
d_eff (float): The mean value of the effective depth in mm.
|
|
95
185
|
e_s (float): The E_modulus for steel in MPa.
|
|
96
|
-
|
|
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.
|
|
186
|
+
m_ed (float): The average bending moment acting in the support strip.
|
|
106
187
|
m_rd (float): The design average strength per unit length in MPa.
|
|
107
|
-
|
|
108
|
-
|
|
188
|
+
m_Pd (float): Optional to cover Eq. (7.3-77) for prestressed slabs.
|
|
189
|
+
The average decompression moment over the width of the support
|
|
190
|
+
strip (b_s) due to prestressing.
|
|
191
|
+
|
|
192
|
+
Returns:
|
|
193
|
+
float: The psi value for the punching level two.
|
|
194
|
+
"""
|
|
195
|
+
return (1.5 * r_s * f_yd / (d_eff * e_s)) * (
|
|
196
|
+
(m_ed - m_Pd) / (m_rd - m_Pd)
|
|
197
|
+
) ** 1.5
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
def psi_punching_level_three(
|
|
201
|
+
psi_punching_level_two: float,
|
|
202
|
+
is_uncracked_model: bool = False,
|
|
203
|
+
is_moment_from_uncracked_model: bool = False,
|
|
204
|
+
) -> float:
|
|
205
|
+
"""The psi value for the punching level three.
|
|
206
|
+
|
|
207
|
+
fib Model Code 2010, Level III of Approximation Eq. (7.3-75) and Eq.
|
|
208
|
+
(7.3-77) with coefficient 1.2 instead of 1.5 under specific conditions.
|
|
209
|
+
|
|
210
|
+
Args:
|
|
211
|
+
psi_punching_level_two (float): The psi value for the punching level 2.
|
|
212
|
+
is_uncracked_model (bool): True if r_s is calculated using a linear
|
|
213
|
+
elastic (uncracked) model.
|
|
214
|
+
is_moment_from_uncracked_model (bool): True if m_sd is calculated from
|
|
215
|
+
a linear elastic (uncracked) model as the average value of the
|
|
216
|
+
moment for design of the flexural reinforcement over the width of
|
|
217
|
+
the support strip (b_s).
|
|
218
|
+
|
|
219
|
+
Returns:
|
|
220
|
+
float: The psi value for the punching level three.
|
|
221
|
+
"""
|
|
222
|
+
if is_uncracked_model and is_moment_from_uncracked_model:
|
|
223
|
+
return 1.2 / 1.5 * psi_punching_level_two
|
|
224
|
+
return psi_punching_level_two
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
def psi_punching(
|
|
228
|
+
psi_punching_level_one: float,
|
|
229
|
+
psi_punching_level_two: float,
|
|
230
|
+
psi_punching_level_three: float,
|
|
231
|
+
approx_lvl_p: float,
|
|
232
|
+
) -> float:
|
|
233
|
+
"""The rotation of the slab around the supported area.
|
|
234
|
+
|
|
235
|
+
fib Model Code 2010, Clause 7.3.5.4.
|
|
236
|
+
|
|
237
|
+
Args:
|
|
238
|
+
psi_punching_level_one (float): The psi value for the punching level 1.
|
|
239
|
+
psi_punching_level_two (float): The psi value for the punching level 2.
|
|
240
|
+
psi_punching_level_three (float): The psi value for the punching level
|
|
241
|
+
3.
|
|
242
|
+
approx_lvl_p (float): The approx level for punching.
|
|
109
243
|
|
|
110
244
|
Returns:
|
|
111
245
|
float: psi for the chosen approx level in punching.
|
|
112
246
|
"""
|
|
113
|
-
r_s = max(0.22 * l_x, 0.22 * l_y)
|
|
114
247
|
if approx_lvl_p == 1:
|
|
115
|
-
|
|
248
|
+
return psi_punching_level_one
|
|
249
|
+
if approx_lvl_p == 2:
|
|
250
|
+
return psi_punching_level_two
|
|
251
|
+
if approx_lvl_p == 3:
|
|
252
|
+
return psi_punching_level_three
|
|
253
|
+
raise ValueError('Approximation level is not defined')
|
|
116
254
|
|
|
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
255
|
|
|
124
|
-
|
|
256
|
+
def k_dg(
|
|
257
|
+
d_g: float,
|
|
258
|
+
) -> float:
|
|
259
|
+
"""Calculate k_dg factor for punching resistance.
|
|
260
|
+
|
|
261
|
+
fib Model Code 2010, Eq. (7.3-62).
|
|
262
|
+
|
|
263
|
+
Args:
|
|
264
|
+
d_g (float): Maximum size of aggregate.
|
|
265
|
+
|
|
266
|
+
Returns:
|
|
267
|
+
float: k_dg factor.
|
|
268
|
+
"""
|
|
269
|
+
return max(32 / (16 + d_g), 0.75)
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
def k_psi(
|
|
273
|
+
k_dg: float,
|
|
274
|
+
d_eff: float,
|
|
275
|
+
psi_punching: float,
|
|
276
|
+
) -> float:
|
|
277
|
+
"""Calculate k_psi factor for punching resistance.
|
|
278
|
+
|
|
279
|
+
fib Model Code 2010, Eq. (7.3-63).
|
|
280
|
+
|
|
281
|
+
Args:
|
|
282
|
+
k_dg (float): k_dg factor.
|
|
283
|
+
d_eff (float): The mean value of the effective depth in mm.
|
|
284
|
+
psi_punching (float): psi value from psi_punching.
|
|
285
|
+
|
|
286
|
+
Returns:
|
|
287
|
+
float: k_psi factor.
|
|
288
|
+
"""
|
|
289
|
+
return min(1 / (1.5 + 0.9 * k_dg * d_eff * psi_punching), 0.6)
|
|
125
290
|
|
|
126
291
|
|
|
127
292
|
def v_rdc_punching(
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
f_yd: float,
|
|
131
|
-
d: float,
|
|
132
|
-
e_s: float,
|
|
133
|
-
approx_lvl_p: float,
|
|
134
|
-
dg: float,
|
|
135
|
-
f_ck: float,
|
|
293
|
+
k_psi_val: float,
|
|
294
|
+
b_0: float,
|
|
136
295
|
d_v: float,
|
|
137
|
-
|
|
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,
|
|
296
|
+
f_ck: float,
|
|
146
297
|
gamma_c: float = 1.5,
|
|
147
298
|
) -> float:
|
|
148
299
|
"""Punching resistance from the concrete.
|
|
149
300
|
|
|
150
|
-
fib Model Code 2010,
|
|
301
|
+
fib Model Code 2010, Eq. (7.3-61).
|
|
151
302
|
|
|
152
303
|
Args:
|
|
153
|
-
|
|
154
|
-
|
|
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.
|
|
304
|
+
k_psi_val (float): k_psi value from k_psi.
|
|
305
|
+
b_0 (float): The shear-resisting control perimeter from b_0.
|
|
161
306
|
d_v (float): The effective depth considering support in mm.
|
|
162
|
-
|
|
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).
|
|
307
|
+
f_ck (float): Characteristic strength in MPa.
|
|
176
308
|
gamma_c: Safety factor for concrete.
|
|
177
309
|
|
|
178
310
|
Returns:
|
|
179
311
|
float: v_rdc for punching with the right approx level.
|
|
180
312
|
"""
|
|
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
|
-
|
|
313
|
+
return k_psi_val * b_0 * d_v * (f_ck**0.5) / gamma_c
|
|
314
|
+
|
|
315
|
+
|
|
316
|
+
def f_ywd(
|
|
317
|
+
f_ywk: float,
|
|
318
|
+
gamma_s: float,
|
|
319
|
+
) -> float:
|
|
320
|
+
"""Calculate f_ywd for punching resistance.
|
|
321
|
+
|
|
322
|
+
fib Model Code 2010, Eq. (7.3-64).
|
|
323
|
+
|
|
324
|
+
Args:
|
|
325
|
+
f_ywk (float): Characteristic yield strength of the shear reinforcement
|
|
326
|
+
in MPa.
|
|
327
|
+
gamma_s (float): Safety factor for reinforcement.
|
|
328
|
+
|
|
329
|
+
Returns:
|
|
330
|
+
float: f_ywd for punching resistance.
|
|
331
|
+
"""
|
|
332
|
+
return f_ywk / gamma_s
|
|
333
|
+
|
|
334
|
+
|
|
335
|
+
def sigma_swd(
|
|
336
|
+
e_s: float,
|
|
337
|
+
psi_punching: float,
|
|
338
|
+
alpha: float,
|
|
339
|
+
f_bd: float,
|
|
340
|
+
d_eff: float,
|
|
341
|
+
f_ywd: float,
|
|
342
|
+
phi_w: float,
|
|
343
|
+
) -> float:
|
|
344
|
+
"""Calculate sigma_swd for punching resistance.
|
|
345
|
+
|
|
346
|
+
fib Model Code 2010, Eq. (7.3-65).
|
|
347
|
+
|
|
348
|
+
Args:
|
|
349
|
+
e_s (float): The E_modulus for steel in MPa.
|
|
350
|
+
psi_punching (float): psi value from psi_punching.
|
|
351
|
+
alpha (float): Inclination of the stirrups in degrees.
|
|
352
|
+
f_bd (float): The design bond strength in MPa.
|
|
353
|
+
d_eff (float): The mean value of the effective depth in mm.
|
|
354
|
+
f_ywd (float): Design yield strength of the shear reinforcement in MPa.
|
|
355
|
+
phi_w (float): The diameter of the shear reinforcement.
|
|
356
|
+
|
|
357
|
+
Returns:
|
|
358
|
+
float: sigma_swd.
|
|
359
|
+
"""
|
|
360
|
+
return min(
|
|
361
|
+
(e_s * psi_punching / 6)
|
|
362
|
+
* (sin(alpha * pi / 180) + cos(alpha * pi / 180))
|
|
363
|
+
* (sin(alpha * pi / 180) + f_bd * d_eff / (f_ywd * phi_w)),
|
|
364
|
+
f_ywd,
|
|
207
365
|
)
|
|
208
|
-
return k_psi * b_0(v_ed, v_prep_d_max) * d_v * (f_ck**0.5) / gamma_c
|
|
209
366
|
|
|
210
367
|
|
|
211
368
|
def v_rds_punching(
|
|
369
|
+
f_ywd: float,
|
|
212
370
|
e_u: float,
|
|
213
371
|
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
372
|
alpha: float,
|
|
228
|
-
|
|
229
|
-
f_ywk: float,
|
|
230
|
-
phi_w: float,
|
|
373
|
+
sigma_swd: float,
|
|
231
374
|
a_sw: float,
|
|
232
|
-
|
|
233
|
-
):
|
|
375
|
+
v_ed: float,
|
|
376
|
+
) -> float:
|
|
234
377
|
"""The punching resistance from shear reinforcement.
|
|
235
378
|
|
|
236
|
-
fib Model Code 2010,
|
|
379
|
+
fib Model Code 2010, Eq. (7.3-64).
|
|
237
380
|
|
|
238
381
|
Args:
|
|
239
|
-
|
|
240
|
-
|
|
382
|
+
f_ywd (float): Design yield strength of the shear reinforcement in MPa.
|
|
383
|
+
e_u (float): The ecentrisity of the result of shear forces with respect
|
|
384
|
+
to the centroid (Figure 7.3-27b).
|
|
241
385
|
b_u (float): The diamter of a circle with same surface as the region
|
|
242
386
|
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
387
|
alpha (float): Inclination of the stirrups in degrees.
|
|
260
|
-
|
|
261
|
-
f_ywk (float): Characteristic yield strength of the shear reinforcement
|
|
262
|
-
in MPa.
|
|
263
|
-
phi_w (float): The diameter of the shear reinforcement.
|
|
388
|
+
sigma_swd (float): sigma_swd from sigma_swd.
|
|
264
389
|
a_sw (float): The area of the shear reinforcement in mm^2.
|
|
265
|
-
|
|
390
|
+
v_ed (float): The acting shear force from the columns.
|
|
266
391
|
|
|
267
392
|
Returns:
|
|
268
393
|
float: Punching resistance that comes from reinforcement.
|
|
269
394
|
"""
|
|
270
|
-
f_ywd = f_ywk / gamma_s
|
|
271
395
|
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
396
|
if (a_sw * k_e * f_ywd) < 0.5 * v_ed:
|
|
299
397
|
warnings.warn(
|
|
300
|
-
|
|
301
|
-
|
|
398
|
+
'Consider increasing punching shear reinforcement for sufficient '
|
|
399
|
+
'deformation capacity'
|
|
302
400
|
)
|
|
303
401
|
return a_sw * k_e * sigma_swd * sin(alpha * pi / 180)
|
|
304
402
|
|
|
305
403
|
|
|
306
404
|
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
405
|
d_v: float,
|
|
324
406
|
f_ck: float,
|
|
325
407
|
d_head: bool,
|
|
326
408
|
stirrups_compression: bool,
|
|
409
|
+
b0_val: float,
|
|
410
|
+
k_psi_val: float,
|
|
327
411
|
gamma_c: float = 1.5,
|
|
328
412
|
) -> float:
|
|
329
413
|
"""Finds the maximum value you can have for v_rd_punching.
|
|
330
414
|
|
|
331
|
-
fib Model Code 2010,
|
|
415
|
+
fib Model Code 2010, Eq. (7.3-69).
|
|
332
416
|
|
|
333
417
|
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
418
|
d_v (float): The effective depth considering support in mm.
|
|
356
419
|
f_ck (float): Characteristic strength in MPa.
|
|
357
420
|
d_head (bool): True if diameter of heads is three times larger than.
|
|
358
421
|
stirrups_compression: (bool): Stirrups with sufficient length at
|
|
359
422
|
compression face, and bent on tension face.
|
|
423
|
+
b0_val (float): The shear-resisting control perimeter from b_0.
|
|
424
|
+
k_psi_val (float): k_psi value from k_psi.
|
|
360
425
|
gamma_c (float): Safety factor for concrete.
|
|
361
426
|
|
|
362
427
|
Return:
|
|
@@ -369,175 +434,22 @@ def v_rd_max_punching(
|
|
|
369
434
|
else:
|
|
370
435
|
k_sys = 2
|
|
371
436
|
|
|
372
|
-
|
|
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
|
-
)
|
|
437
|
+
base_resistance = b0_val * d_v * (f_ck**0.5 / gamma_c)
|
|
403
438
|
|
|
439
|
+
return min(k_sys * k_psi_val * base_resistance, base_resistance)
|
|
404
440
|
|
|
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
441
|
|
|
437
|
-
|
|
442
|
+
def v_rd_punching(v_rd_c: float, v_rd_s: float, v_rd_max: float) -> float:
|
|
443
|
+
"""The total resistance for punching.
|
|
444
|
+
|
|
445
|
+
fib Model Code 2010, Eq. (7.3-60).
|
|
438
446
|
|
|
439
447
|
Args:
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
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).
|
|
448
|
+
v_rd_c: Concrete contribution to punching resistance.
|
|
449
|
+
v_rd_s: Shear reinforcement contribution to punching resistance.
|
|
450
|
+
v_rd_max: Maximum punching resistance.
|
|
471
451
|
|
|
472
|
-
|
|
473
|
-
float:
|
|
474
|
-
from v_rdc and v_rds.
|
|
452
|
+
Returns:
|
|
453
|
+
float: Total punching resistance as min(v_rd_c + v_rd_s, v_rd_max).
|
|
475
454
|
"""
|
|
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
|
-
)
|
|
455
|
+
return min(v_rd_c + v_rd_s, v_rd_max)
|