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.
- structuralcodes/__init__.py +17 -0
- structuralcodes/codes/__init__.py +79 -0
- structuralcodes/codes/ec2_2004/__init__.py +133 -0
- structuralcodes/codes/ec2_2004/_concrete_material_properties.py +239 -0
- structuralcodes/codes/ec2_2004/_reinforcement_material_properties.py +104 -0
- structuralcodes/codes/ec2_2004/_section_7_3_crack_control.py +941 -0
- structuralcodes/codes/ec2_2004/annex_b_shrink_and_creep.py +257 -0
- structuralcodes/codes/ec2_2004/shear.py +506 -0
- structuralcodes/codes/ec2_2023/__init__.py +104 -0
- structuralcodes/codes/ec2_2023/_annexB_time_dependent.py +17 -0
- structuralcodes/codes/ec2_2023/_section5_materials.py +1160 -0
- structuralcodes/codes/ec2_2023/_section9_sls.py +325 -0
- structuralcodes/codes/mc2010/__init__.py +169 -0
- structuralcodes/codes/mc2010/_concrete_creep_and_shrinkage.py +704 -0
- structuralcodes/codes/mc2010/_concrete_interface_different_casting_times.py +104 -0
- structuralcodes/codes/mc2010/_concrete_material_properties.py +463 -0
- structuralcodes/codes/mc2010/_concrete_punching.py +543 -0
- structuralcodes/codes/mc2010/_concrete_shear.py +749 -0
- structuralcodes/codes/mc2010/_concrete_torsion.py +164 -0
- structuralcodes/codes/mc2010/_reinforcement_material_properties.py +105 -0
- structuralcodes/core/__init__.py +1 -0
- structuralcodes/core/_section_results.py +211 -0
- structuralcodes/core/base.py +260 -0
- structuralcodes/geometry/__init__.py +25 -0
- structuralcodes/geometry/_geometry.py +875 -0
- structuralcodes/geometry/_steel_sections.py +2155 -0
- structuralcodes/materials/__init__.py +9 -0
- structuralcodes/materials/concrete/__init__.py +82 -0
- structuralcodes/materials/concrete/_concrete.py +114 -0
- structuralcodes/materials/concrete/_concreteEC2_2004.py +477 -0
- structuralcodes/materials/concrete/_concreteEC2_2023.py +435 -0
- structuralcodes/materials/concrete/_concreteMC2010.py +494 -0
- structuralcodes/materials/constitutive_laws.py +979 -0
- structuralcodes/materials/reinforcement/__init__.py +84 -0
- structuralcodes/materials/reinforcement/_reinforcement.py +172 -0
- structuralcodes/materials/reinforcement/_reinforcementEC2_2004.py +103 -0
- structuralcodes/materials/reinforcement/_reinforcementEC2_2023.py +93 -0
- structuralcodes/materials/reinforcement/_reinforcementMC2010.py +98 -0
- structuralcodes/sections/__init__.py +23 -0
- structuralcodes/sections/_generic.py +1249 -0
- structuralcodes/sections/_reinforcement.py +115 -0
- structuralcodes/sections/section_integrators/__init__.py +14 -0
- structuralcodes/sections/section_integrators/_factory.py +41 -0
- structuralcodes/sections/section_integrators/_fiber_integrator.py +238 -0
- structuralcodes/sections/section_integrators/_marin_integration.py +47 -0
- structuralcodes/sections/section_integrators/_marin_integrator.py +222 -0
- structuralcodes/sections/section_integrators/_section_integrator.py +49 -0
- structuralcodes-0.0.1.dist-info/METADATA +40 -0
- structuralcodes-0.0.1.dist-info/RECORD +50 -0
- structuralcodes-0.0.1.dist-info/WHEEL +4 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"""Shear at the interface between concrete with different casting times."""
|
|
2
|
+
|
|
3
|
+
from math import cos, pi, sin
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def tau_edi(beta: float, v_ed: float, z: float, b_i: float) -> float:
|
|
7
|
+
"""Shear at the interface between concrete cast at different times.
|
|
8
|
+
|
|
9
|
+
fib Model Code 2010, eq. (7.3-49).
|
|
10
|
+
|
|
11
|
+
Args:
|
|
12
|
+
beta (float): The ratio of longitudinal force in the new concrete and
|
|
13
|
+
the longitudinal force in either compression or tension zone.
|
|
14
|
+
v_ed (float): The shear force at the interface in N.
|
|
15
|
+
z (float): The inner lever arm of the composed section in mm.
|
|
16
|
+
b_i (float): The width of the inerface in mm.
|
|
17
|
+
|
|
18
|
+
Returns:
|
|
19
|
+
float: The shear force that should be used at the intersection.
|
|
20
|
+
"""
|
|
21
|
+
return (beta * v_ed) / (z * b_i)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def tau_rdi_without_reinforcement(
|
|
25
|
+
c_a: float,
|
|
26
|
+
f_ctd: float,
|
|
27
|
+
mu: float,
|
|
28
|
+
sigma_n: float,
|
|
29
|
+
f_ck: float,
|
|
30
|
+
f_cd: float,
|
|
31
|
+
) -> float:
|
|
32
|
+
"""Shear resistance without reinforcement at the intesection with different
|
|
33
|
+
casting time.
|
|
34
|
+
|
|
35
|
+
fib Model Code 2010, eq. (7.3-50).
|
|
36
|
+
|
|
37
|
+
Args:
|
|
38
|
+
c_a (float): The coefficient for adhesive bond (Table 7.3-1).
|
|
39
|
+
f_ctd (float): The design axial tensile strength of concrete.
|
|
40
|
+
mu (float): The friction coefficient.
|
|
41
|
+
sigma_n (float): The lowest expected compressive stress from normal
|
|
42
|
+
forces in MPa.
|
|
43
|
+
f_ck (float): Characteristic strength in MPa.
|
|
44
|
+
f_cd (float): The design value of cylinder compressive strength
|
|
45
|
+
concrete in MPa.
|
|
46
|
+
|
|
47
|
+
Returns:
|
|
48
|
+
float: The shear resistance without reinforcement at the intesection
|
|
49
|
+
with different casting time.
|
|
50
|
+
"""
|
|
51
|
+
v = min(0.55 * (30 / f_ck) ** (1 / 3), 0.55)
|
|
52
|
+
return min((c_a * f_ctd) + (mu * sigma_n), 0.5 * v * f_cd)
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def tau_rdi_with_reinforcement(
|
|
56
|
+
c_r: float,
|
|
57
|
+
k1: float,
|
|
58
|
+
k2: float,
|
|
59
|
+
mu: float,
|
|
60
|
+
ro: float,
|
|
61
|
+
sigma_n: float,
|
|
62
|
+
alpha: float,
|
|
63
|
+
beta_c: float,
|
|
64
|
+
f_ck: float,
|
|
65
|
+
f_yd: float,
|
|
66
|
+
f_cd: float,
|
|
67
|
+
) -> float:
|
|
68
|
+
"""Shear resistance with reinforcement or dowels at the intesection with
|
|
69
|
+
different casting time.
|
|
70
|
+
|
|
71
|
+
fib Model Code 2010, eq. (7.3-51).
|
|
72
|
+
|
|
73
|
+
Args:
|
|
74
|
+
c_r (float): Coefficient for aggregate interlock effects (Table 7.3-2).
|
|
75
|
+
k1 (float): The interaction coefficient for tensile force activated in
|
|
76
|
+
reinforcment (Table 7.3-2).
|
|
77
|
+
k2 (float): The interaction coeffiction for flexural resistance (Table
|
|
78
|
+
7.3-2).
|
|
79
|
+
mu (float): The friction coefficient (Table 7.3-2).
|
|
80
|
+
ro (float): The reinforcement ratio of reinforcing steel crossing the
|
|
81
|
+
interface.
|
|
82
|
+
sigma_n (float): The lowest expected compressive stress resulting from
|
|
83
|
+
normal forces acting on the interface in MPa.
|
|
84
|
+
alpha (float): The inclination of reinforcement crossing the interface
|
|
85
|
+
(Table 7.3-14).
|
|
86
|
+
beta_c (float): The coefficient for strength of compression strut
|
|
87
|
+
(Table 7.3-2).
|
|
88
|
+
f_ck (float): Characteristic strength in MPa.
|
|
89
|
+
f_yd (float): design strength of reinforment steel in MPa.
|
|
90
|
+
f_cd (float): The design value of cylinder compressive strength
|
|
91
|
+
concrete.
|
|
92
|
+
|
|
93
|
+
Returns:
|
|
94
|
+
float: Shear resistance with reinforcement at intesection with
|
|
95
|
+
different casting time.
|
|
96
|
+
"""
|
|
97
|
+
v = min(0.55 * (30 / f_ck) ** (1 / 3), 0.55)
|
|
98
|
+
return min(
|
|
99
|
+
(c_r * f_ck ** (1 / 3))
|
|
100
|
+
+ (mu * sigma_n)
|
|
101
|
+
+ k1 * ro * f_yd * (mu * sin(alpha * pi / 180) + cos(alpha * pi / 180))
|
|
102
|
+
+ k2 * ro * (f_yd * f_cd) ** 0.5,
|
|
103
|
+
beta_c * v * f_cd,
|
|
104
|
+
)
|
|
@@ -0,0 +1,463 @@
|
|
|
1
|
+
"""A collection of material properties for concrete."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations # To have clean hints of ArrayLike in docs
|
|
4
|
+
|
|
5
|
+
import math
|
|
6
|
+
import typing as t
|
|
7
|
+
|
|
8
|
+
import numpy as np
|
|
9
|
+
import numpy.typing as npt
|
|
10
|
+
|
|
11
|
+
# Values from Table 5.1-6.
|
|
12
|
+
ALPHA_E = {
|
|
13
|
+
'basalt': 1.2,
|
|
14
|
+
'quartzite': 1.0,
|
|
15
|
+
'limestone': 0.9,
|
|
16
|
+
'sandstone': 0.7,
|
|
17
|
+
}
|
|
18
|
+
# Values for normal strength concrete, from Table 5.1-9.
|
|
19
|
+
S_CEM = {
|
|
20
|
+
'32.5 R': 0.25,
|
|
21
|
+
'42.5 N': 0.25,
|
|
22
|
+
'42.5 R': 0.2,
|
|
23
|
+
'52.5 N': 0.2,
|
|
24
|
+
'52.5 R': 0.2,
|
|
25
|
+
'32.5 N': 0.38,
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def fcm(fck: float, delta_f: float = 8.0) -> float:
|
|
30
|
+
"""Compute the mean concrete compressive strength from the characteristic
|
|
31
|
+
strength.
|
|
32
|
+
|
|
33
|
+
fib Model Code 2010, Eq. (5.1-1).
|
|
34
|
+
|
|
35
|
+
Args:
|
|
36
|
+
fck (float): The characteristic compressive strength in MPa.
|
|
37
|
+
|
|
38
|
+
Keyword Args:
|
|
39
|
+
delta_f (float): The difference between the mean and the characteristic
|
|
40
|
+
strength.
|
|
41
|
+
|
|
42
|
+
Returns:
|
|
43
|
+
float: The mean compressive strength in MPa.
|
|
44
|
+
"""
|
|
45
|
+
return abs(fck) + abs(delta_f)
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def fctm(fck: float) -> float:
|
|
49
|
+
"""Compute the mean concrete tensile strength from the characteristic
|
|
50
|
+
compressive strength.
|
|
51
|
+
|
|
52
|
+
fib Model Code 2010, Eqs. (5.1-3a) and (5.1-3b).
|
|
53
|
+
|
|
54
|
+
Args:
|
|
55
|
+
fck (float): The characteristic compressive strength in MPa.
|
|
56
|
+
|
|
57
|
+
Returns:
|
|
58
|
+
float: The mean tensile strength in MPa.
|
|
59
|
+
"""
|
|
60
|
+
if abs(fck) <= 50:
|
|
61
|
+
return 0.3 * math.pow(abs(fck), 2 / 3)
|
|
62
|
+
return 2.12 * math.log(1 + 0.1 * fcm(fck))
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def fctkmin(fctm: float) -> float:
|
|
66
|
+
"""Compute the lower bound value of the characteristic tensile strength
|
|
67
|
+
from the mean tensile strength.
|
|
68
|
+
|
|
69
|
+
fib Model Code 2010, Eq. (5.1-4).
|
|
70
|
+
|
|
71
|
+
Args:
|
|
72
|
+
fctm (float): The mean tensile strength in MPa.
|
|
73
|
+
|
|
74
|
+
Returns:
|
|
75
|
+
float: Lower bound of the characteristic tensile strength in MPa.
|
|
76
|
+
"""
|
|
77
|
+
return 0.7 * fctm
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def fctkmax(fctm: float) -> float:
|
|
81
|
+
"""Compute the upper bound value of the characteristic tensile strength
|
|
82
|
+
from the mean tensile strength.
|
|
83
|
+
|
|
84
|
+
fib Model Code 2010, Eq. (5.1-5).
|
|
85
|
+
|
|
86
|
+
Args:
|
|
87
|
+
fctm (float): The mean tensile strength in MPa.
|
|
88
|
+
|
|
89
|
+
Returns:
|
|
90
|
+
float: Upper bound of the characteristic tensile strength in MPa.
|
|
91
|
+
"""
|
|
92
|
+
return 1.3 * fctm
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
def Gf(fck: float) -> float:
|
|
96
|
+
"""Compute tensile fracture energy from characteristic compressive
|
|
97
|
+
strength.
|
|
98
|
+
|
|
99
|
+
fib Model Code 2010, Eq. (5.1-9).
|
|
100
|
+
|
|
101
|
+
Args:
|
|
102
|
+
fck (float): The characteristic compressive strength in MPa.
|
|
103
|
+
|
|
104
|
+
Returns:
|
|
105
|
+
float: The tensile fracture energy in N/m.
|
|
106
|
+
"""
|
|
107
|
+
return 73 * fcm(fck) ** 0.18
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
def Eci(
|
|
111
|
+
fcm: float,
|
|
112
|
+
agg_type: t.Literal[
|
|
113
|
+
'basalt', 'quartzite', 'limestone', 'sandstone'
|
|
114
|
+
] = 'quartzite',
|
|
115
|
+
EC0: float = 21500,
|
|
116
|
+
) -> float:
|
|
117
|
+
"""Calculate the modulus of elasticity for normal weight concrete at 28
|
|
118
|
+
days.
|
|
119
|
+
|
|
120
|
+
Defined in fib Model Code 2010 (2013), Eq. 5.1-21.
|
|
121
|
+
|
|
122
|
+
Args:
|
|
123
|
+
fcm (float): The mean value of the compressive strength of the
|
|
124
|
+
concrete in MPa.
|
|
125
|
+
|
|
126
|
+
Keyword Args:
|
|
127
|
+
agg_type (str): Type of coarse grain aggregate used in the concrete.
|
|
128
|
+
Choices are: 'basalt', 'quartzite', 'limestone', 'sandstone'.
|
|
129
|
+
EC0 (float): Initial value of modulus of elasticity in MPa.
|
|
130
|
+
|
|
131
|
+
Returns:
|
|
132
|
+
float: The modulus of elasticity for normal weight concrete at 28 days
|
|
133
|
+
in MPa.
|
|
134
|
+
"""
|
|
135
|
+
return EC0 * ALPHA_E[agg_type.lower()] * (fcm / 10) ** (1 / 3)
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
def beta_cc(
|
|
139
|
+
time: npt.ArrayLike,
|
|
140
|
+
fcm: float,
|
|
141
|
+
cem_class: t.Literal[
|
|
142
|
+
'32.5 N', '32.5 R', '42.5 N', '42.5 R', '52.5 N', '52.5 R'
|
|
143
|
+
],
|
|
144
|
+
) -> np.ndarray:
|
|
145
|
+
"""Calculate multiplication factor beta_cc, used to determine the
|
|
146
|
+
compressive strength at an arbitrary time.
|
|
147
|
+
|
|
148
|
+
Defined in fib Model Code 2010 (2013), Eq. 5.1-51.
|
|
149
|
+
|
|
150
|
+
Args:
|
|
151
|
+
time (numpy.typing.ArrayLike): The time in days at which the
|
|
152
|
+
compressive strength is to be determined.
|
|
153
|
+
fcm (float): The mean compressive strength of the concrete in MPa.
|
|
154
|
+
cem_class (str): The cement strength class that is used. The choices
|
|
155
|
+
are: '32.5 N', '32.5 R', '42.5 N', '42.5 R', '52.5 N', '52.5 R'.
|
|
156
|
+
|
|
157
|
+
Returns:
|
|
158
|
+
numpy.ndarray: Multiplication factor beta_cc.
|
|
159
|
+
"""
|
|
160
|
+
if fcm > 60:
|
|
161
|
+
return np.exp(0.2 * (1 - np.sqrt(28 / time)))
|
|
162
|
+
return np.exp(S_CEM[cem_class.upper()] * (1 - np.sqrt(28 / time)))
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
def beta_e(beta_cc: npt.ArrayLike) -> np.ndarray:
|
|
166
|
+
"""Calculate multiplication factor beta_e, used to determine the modulus of
|
|
167
|
+
elasticity at an arbitrary time.
|
|
168
|
+
|
|
169
|
+
Defined in fib Model Code 2010 (2013), Eq. 5.1-57.
|
|
170
|
+
|
|
171
|
+
Args:
|
|
172
|
+
beta_cc (numpy.typing.ArrayLike): Multiplication factor as defined in
|
|
173
|
+
the fib Model Code 2010 (2013), Eq. 5.1-51.
|
|
174
|
+
|
|
175
|
+
Returns:
|
|
176
|
+
numpy.ndarray: Multiplication factor beta_e.
|
|
177
|
+
"""
|
|
178
|
+
return np.sqrt(beta_cc)
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
def Eci_t(beta_e: npt.ArrayLike, Eci: float) -> np.ndarray:
|
|
182
|
+
"""Calculate the modulus of elasticity for normal weight concrete at time
|
|
183
|
+
'time' (not 28 days).
|
|
184
|
+
|
|
185
|
+
Defined in fib Model Code 2010 (2013), Eq. 5.1-56.
|
|
186
|
+
|
|
187
|
+
Args:
|
|
188
|
+
beta_e (numpy.typing.ArrayLike): Multiplication factor to determine
|
|
189
|
+
the modulus of elasticity at an arbitrary time, as defined in fib
|
|
190
|
+
Model Code 2010 (2013), Eq. 5.1-51.
|
|
191
|
+
Eci (float): Modulus of elasticity of normal weight concrete at 28
|
|
192
|
+
days, as defined in fib Model Code 2010 (2013), Eq. 5.1-21.
|
|
193
|
+
|
|
194
|
+
Returns:
|
|
195
|
+
numpy.ndarray: The modulus of elasticity for normal weight concrete at
|
|
196
|
+
time 'time' (not 28 days) in MPa.
|
|
197
|
+
"""
|
|
198
|
+
return beta_e * Eci
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
def fcd(fck: float, alpha_cc: float = 1.0, gamma_c: float = 1.5) -> float:
|
|
202
|
+
"""The design compressive strength of concrete.
|
|
203
|
+
|
|
204
|
+
Defined in fib Model Code 2010 (2013), Eq. 7.2-11.
|
|
205
|
+
|
|
206
|
+
Args:
|
|
207
|
+
fck (float): The characteristic compressive strength in MPa.
|
|
208
|
+
|
|
209
|
+
Keyword Args:
|
|
210
|
+
alpha_cc (float): A factor for considering long-term effects on the
|
|
211
|
+
strength, and effects that arise from the way the load is applied.
|
|
212
|
+
Default value 1.0.
|
|
213
|
+
gamma_c (float): The partial factor of concrete. Default value 1.5.
|
|
214
|
+
|
|
215
|
+
Returns:
|
|
216
|
+
float: The design compressive strength of concrete in MPa.
|
|
217
|
+
"""
|
|
218
|
+
return abs(alpha_cc) * abs(fck) / abs(gamma_c)
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
def eps_c1(fck: float) -> float:
|
|
222
|
+
"""The strain at maximum compressive stress of concrete (fcm) for the
|
|
223
|
+
Sargin constitutive law.
|
|
224
|
+
|
|
225
|
+
Defined in fib Model Code 2010 (2013), Eq. 5.1-26 and Table 5.1-8
|
|
226
|
+
|
|
227
|
+
The value is computing using interpolation from Table 5.1-8
|
|
228
|
+
|
|
229
|
+
Args:
|
|
230
|
+
fck (float): The characteristic compressive strength of concrete in
|
|
231
|
+
MPa.
|
|
232
|
+
|
|
233
|
+
Returns:
|
|
234
|
+
float: The strain at maximum compressive stress, absolute value, no
|
|
235
|
+
unit.
|
|
236
|
+
|
|
237
|
+
Raises:
|
|
238
|
+
ValueError: if fck is less than 12 or greater than 120
|
|
239
|
+
"""
|
|
240
|
+
grade = np.array(
|
|
241
|
+
[12, 16, 20, 25, 30, 35, 40, 45, 50, 55, 60, 70, 80, 90, 100, 110, 120]
|
|
242
|
+
)
|
|
243
|
+
eps_c1 = np.array(
|
|
244
|
+
[
|
|
245
|
+
-1.9,
|
|
246
|
+
-2.0,
|
|
247
|
+
-2.1,
|
|
248
|
+
-2.2,
|
|
249
|
+
-2.3,
|
|
250
|
+
-2.3,
|
|
251
|
+
-2.4,
|
|
252
|
+
-2.5,
|
|
253
|
+
-2.6,
|
|
254
|
+
-2.6,
|
|
255
|
+
-2.7,
|
|
256
|
+
-2.7,
|
|
257
|
+
-2.8,
|
|
258
|
+
-2.9,
|
|
259
|
+
-3.0,
|
|
260
|
+
-3.0,
|
|
261
|
+
-3.0,
|
|
262
|
+
]
|
|
263
|
+
)
|
|
264
|
+
if fck < grade.min() or fck > grade.max():
|
|
265
|
+
raise ValueError(
|
|
266
|
+
f'fck must be between {grade.min()} MPa and {grade.max()} MPa.'
|
|
267
|
+
' fck = {fck} given.'
|
|
268
|
+
)
|
|
269
|
+
return np.interp(fck, grade, eps_c1) / 1000
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
def eps_clim(fck: float) -> float:
|
|
273
|
+
"""The ultimate strain for the Sargin constitutive law.
|
|
274
|
+
|
|
275
|
+
Defined in fib Model Code 2010 (2013), Eq. 5.1-26 and Table 5.1-8
|
|
276
|
+
|
|
277
|
+
The value is computing using interpolation from Table 5.1-8
|
|
278
|
+
|
|
279
|
+
Args:
|
|
280
|
+
fck (float): The characteristic compressive strength of concrete in
|
|
281
|
+
MPa.
|
|
282
|
+
|
|
283
|
+
Returns:
|
|
284
|
+
float: The ultimate strain, absolute value, no unit.
|
|
285
|
+
"""
|
|
286
|
+
grade = np.array(
|
|
287
|
+
[12, 16, 20, 25, 30, 35, 40, 45, 50, 55, 60, 70, 80, 90, 100, 110, 120]
|
|
288
|
+
)
|
|
289
|
+
eps_clim = np.array(
|
|
290
|
+
[
|
|
291
|
+
-3.5,
|
|
292
|
+
-3.5,
|
|
293
|
+
-3.5,
|
|
294
|
+
-3.5,
|
|
295
|
+
-3.5,
|
|
296
|
+
-3.5,
|
|
297
|
+
-3.5,
|
|
298
|
+
-3.5,
|
|
299
|
+
-3.4,
|
|
300
|
+
-3.4,
|
|
301
|
+
-3.3,
|
|
302
|
+
-3.2,
|
|
303
|
+
-3.1,
|
|
304
|
+
-3.0,
|
|
305
|
+
-3.0,
|
|
306
|
+
-3.0,
|
|
307
|
+
-3.0,
|
|
308
|
+
]
|
|
309
|
+
)
|
|
310
|
+
if fck < grade.min() or fck > grade.max():
|
|
311
|
+
raise ValueError(
|
|
312
|
+
f'fck must be between {grade.min()} MPa and {grade.max()} MPa.'
|
|
313
|
+
' fck = {fck} given.'
|
|
314
|
+
)
|
|
315
|
+
return np.interp(fck, grade, eps_clim) / 1000
|
|
316
|
+
|
|
317
|
+
|
|
318
|
+
def k_sargin(fck: float) -> float:
|
|
319
|
+
"""The plasticity number k for Sargin constitutive Law.
|
|
320
|
+
|
|
321
|
+
Defined in fib Model Code 2010 (2013), Eq. 5.1-26 and Table 5.1-8
|
|
322
|
+
|
|
323
|
+
Args:
|
|
324
|
+
fck (float): The characteristic compressive strength of concrete in
|
|
325
|
+
MPa.
|
|
326
|
+
|
|
327
|
+
Returns:
|
|
328
|
+
float: The plasticity number k, absolute value, no unit.
|
|
329
|
+
"""
|
|
330
|
+
grade = np.array(
|
|
331
|
+
[12, 16, 20, 25, 30, 35, 40, 45, 50, 55, 60, 70, 80, 90, 100, 110, 120]
|
|
332
|
+
)
|
|
333
|
+
k = np.array(
|
|
334
|
+
[
|
|
335
|
+
2.44,
|
|
336
|
+
2.36,
|
|
337
|
+
2.28,
|
|
338
|
+
2.15,
|
|
339
|
+
2.04,
|
|
340
|
+
1.92,
|
|
341
|
+
1.82,
|
|
342
|
+
1.74,
|
|
343
|
+
1.66,
|
|
344
|
+
1.61,
|
|
345
|
+
1.55,
|
|
346
|
+
1.47,
|
|
347
|
+
1.41,
|
|
348
|
+
1.36,
|
|
349
|
+
1.32,
|
|
350
|
+
1.24,
|
|
351
|
+
1.18,
|
|
352
|
+
]
|
|
353
|
+
)
|
|
354
|
+
if fck < grade.min() or fck > grade.max():
|
|
355
|
+
raise ValueError(
|
|
356
|
+
f'fck must be between {grade.min()} MPa and {grade.max()} MPa.'
|
|
357
|
+
' fck = {fck} given.'
|
|
358
|
+
)
|
|
359
|
+
return np.interp(fck, grade, k)
|
|
360
|
+
|
|
361
|
+
|
|
362
|
+
def eps_cu1(fck: float) -> float:
|
|
363
|
+
"""The nominal ultimate strain for the Sargin constitutive law.
|
|
364
|
+
|
|
365
|
+
Defined in fib Model Code 2010 (2013), Table 7.2-1 and Eq. 7.2-10
|
|
366
|
+
|
|
367
|
+
Args:
|
|
368
|
+
fck (float): The characteristic compressive strength of concrete in
|
|
369
|
+
MPa.
|
|
370
|
+
|
|
371
|
+
Returns:
|
|
372
|
+
float: The strain at maximum compressive stress, absolute value, no
|
|
373
|
+
unit.
|
|
374
|
+
"""
|
|
375
|
+
return eps_clim(fck)
|
|
376
|
+
|
|
377
|
+
|
|
378
|
+
def eps_c2(fck: float) -> float:
|
|
379
|
+
"""The strain at maximum compressive stress of concrete for the
|
|
380
|
+
parabolic-rectangular law.
|
|
381
|
+
|
|
382
|
+
Defined in fib Model Code 2010 (2013), Table 7.2-1
|
|
383
|
+
|
|
384
|
+
Args:
|
|
385
|
+
fck (float): The characteristic compressive strength of concrete in
|
|
386
|
+
MPa.
|
|
387
|
+
|
|
388
|
+
Returns:
|
|
389
|
+
float: The strain at maximum compressive stress, absolute value, no
|
|
390
|
+
unit.
|
|
391
|
+
"""
|
|
392
|
+
fck = abs(fck)
|
|
393
|
+
return (
|
|
394
|
+
2.0 / 1000 if fck <= 50 else (2.0 + 0.085 * (fck - 50) ** 0.53) / 1000
|
|
395
|
+
)
|
|
396
|
+
|
|
397
|
+
|
|
398
|
+
def eps_cu2(fck: float) -> float:
|
|
399
|
+
"""The ultimate strain of the parabolic-rectangular law.
|
|
400
|
+
|
|
401
|
+
Defined in fib Model Code 2010 (2013), Table 7.2-1
|
|
402
|
+
|
|
403
|
+
Args:
|
|
404
|
+
fck (float): The characteristic compressive strength of concrete in
|
|
405
|
+
MPa.
|
|
406
|
+
|
|
407
|
+
Returns:
|
|
408
|
+
float: The ultimate strain, absolute value, no unit.
|
|
409
|
+
"""
|
|
410
|
+
fck = abs(fck)
|
|
411
|
+
return (
|
|
412
|
+
3.5 / 1000
|
|
413
|
+
if fck <= 50
|
|
414
|
+
else (2.6 + 35 * ((90 - fck) / 100) ** 4) / 1000
|
|
415
|
+
)
|
|
416
|
+
|
|
417
|
+
|
|
418
|
+
def n_parabolic_rectangular(fck: float) -> float:
|
|
419
|
+
"""The exponent in the parabolic-rectangular law.
|
|
420
|
+
|
|
421
|
+
Defined in fib Model Code 2010 (2013), Table 7.2-1
|
|
422
|
+
|
|
423
|
+
Args:
|
|
424
|
+
fck (float): The characteristic compressive strength of concrete in
|
|
425
|
+
MPa.
|
|
426
|
+
|
|
427
|
+
Returns:
|
|
428
|
+
float: The exponent n, absolute value, no unit.
|
|
429
|
+
"""
|
|
430
|
+
fck = abs(fck)
|
|
431
|
+
return 2.0 if fck <= 50 else (1.4 + 23.4 * ((90 - fck) / 100) ** 4)
|
|
432
|
+
|
|
433
|
+
|
|
434
|
+
def eps_c3(fck: float) -> float:
|
|
435
|
+
"""The strain at maximum compressive stress of the bi-linear law.
|
|
436
|
+
|
|
437
|
+
Defined in fib Model Code 2010 (2013), Table 7.2-1
|
|
438
|
+
|
|
439
|
+
Args:
|
|
440
|
+
fck (float): The characteristic compressive strength of concrete in
|
|
441
|
+
MPa.
|
|
442
|
+
|
|
443
|
+
Returns:
|
|
444
|
+
float: The strain at maximum compressive stress, absolute value, no
|
|
445
|
+
unit.
|
|
446
|
+
"""
|
|
447
|
+
fck = abs(fck)
|
|
448
|
+
return 1.75 / 1000 if fck <= 50 else (1.75 + 0.55 * (fck - 50) / 40) / 1000
|
|
449
|
+
|
|
450
|
+
|
|
451
|
+
def eps_cu3(fck: float) -> float:
|
|
452
|
+
"""The ultimate strain of the bi-linear law.
|
|
453
|
+
|
|
454
|
+
Defined in fib Model Code 2010 (2013), Table 7.2-1
|
|
455
|
+
|
|
456
|
+
Args:
|
|
457
|
+
fck (float): The characteristic compressive strength of concrete in
|
|
458
|
+
MPa.
|
|
459
|
+
|
|
460
|
+
Returns:
|
|
461
|
+
float: The ultimate strain, absolute value, no unit.
|
|
462
|
+
"""
|
|
463
|
+
return eps_cu2(fck)
|