2Module for the section (steel I shape profiles, RC circular/square/rectangular sections).
8from copy
import copy, deepcopy
15 Parent abstract class for the storage and manipulation of a section
's information (mechanical and geometrical parameters, etc).
17 @param DataManagement: Parent abstract
class.
24 Class that stores funcions, geometric and mechanical properties of a steel double symmetric I-shape profile.
25 The parameter
'n' is used
as global throughout the SteelIShape sections to optimise the program (given the fact that
is constant everytime).
27 @param Section: Parent abstract
class.
32 def __init__(self, Type: str, d, bf, tf, tw, L, r, E, Fy, Fy_web = -1, name_tag =
"Not Defined"):
34 The conctructor of the class.
36 @param Type (str): Type of the section. It can be
'Col' for column
or 'Beam' for beams.
37 @param d (float): Depth of the section.
38 @param bf (float): Flange
's width of the section
39 @param tf (float): Flange
's thickness of the section
40 @param tw (float): Web
's thickness of the section
41 @param L (float): Effective length of the element associated
with this section.
42 If the panel zone
is present, exclude its dimension.
43 @param r (float): Radius of the weld fillets of the section.
44 @param E (float): Young modulus of the section.
45 @param Fy (float): Yield strength of the flange of the section. Used
as the
yield strength of the entire section.
46 @param Fy_web (float, optional): Yield strength of the web of the section. Used
for panel zone associated to this section.
47 Defaults to -1, e.g. computed
in __init__()
as equal to Fy.
48 @param name_tag (str, optional): Name TAG of the section. Defaults to
"Not Defined".
50 @exception WrongArgument: Type needs to be
'Col' or 'Beam'.
51 @exception NegativeValue: d needs to be positive.
52 @exception NegativeValue: bf needs to be positive.
53 @exception NegativeValue: tf needs to be positive.
54 @exception NegativeValue: tw needs to be positive.
55 @exception NegativeValue: L needs to be positive.
56 @exception NegativeValue: r needs to be positive.
57 @exception NegativeValue: E needs to be positive.
58 @exception NegativeValue: Fy needs to be positive.
59 @exception NegativeValue: Fy_web needs to be positive
if different
from -1.
60 @exception InconsistentGeometry: tw should be smaller than bf.
61 @exception InconsistentGeometry: tf needs to be smaller than half of d
62 @exception InconsistentGeometry: r should be less than half bf
and d
65 if Type !=
"Beam" and Type !=
"Col":
raise WrongArgument()
66 if d < 0:
raise NegativeValue()
67 if bf < 0:
raise NegativeValue()
68 if tf < 0:
raise NegativeValue()
69 if tw < 0:
raise NegativeValue()
70 if L < 0:
raise NegativeValue()
71 if r < 0:
raise NegativeValue()
72 if E < 0:
raise NegativeValue()
73 if Fy < 0:
raise NegativeValue()
74 if Fy_web != -1
and Fy_web < 0:
raise NegativeValue()
75 if tw > bf:
raise InconsistentGeometry()
76 if tf > d/2:
raise InconsistentGeometry()
77 if r > bf/2
or r > d/2:
raise InconsistentGeometry()
89 self.
Fy_webFy_web = Fy
if Fy_web == -1
else Fy_web
97 Implementation of the homonym abstract method.
101 self.
h_1h_1 = self.
dd - 2.0*self.
rr -2.0*self.
tftf
118 Implementation of the homonym abstract method.
121 self.datadata = [["INFO_TYPE",
"SteelIShape"],
122 [
"name_tag", self.
name_tagname_tag],
123 [
"Type", self.
TypeType],
130 [
"h_1", self.
h_1h_1],
133 [
"Fy_web", self.
Fy_webFy_web],
137 [
"Wply", self.
WplyWply],
138 [
"Wplz", self.
WplzWplz],
139 [
"Iy_mod", self.
Iy_modIy_mod],
142 [
"Npl", self.
NplNpl],
147 Implementation of the homonym abstract method.
151 print(
"Requested info for steel I shape section of type = {} and name tag = {}".format(self.
TypeType, self.
name_tagname_tag))
152 print(
"d = {} mm".format(self.
dd/mm_unit))
153 print(
"Fy = {} MPa".format(self.
FyFy/MPa_unit))
154 print(
"Fy web = {} MPa".format(self.
Fy_webFy_web/MPa_unit))
155 print(
"E = {} GPa".format(self.
EE/GPa_unit))
156 print(
"h_1 = {} mm".format(self.
h_1h_1/mm_unit))
157 print(
"A = {} mm2".format(self.
AA/mm2_unit))
158 print(
"Iy = {} mm4".format(self.
IyIy/mm4_unit))
159 print(
"Iz = {} mm4".format(self.
IzIz/mm4_unit))
160 print(
"Wply = {} mm3".format(self.
WplyWply/mm3_unit))
161 print(
"Wplz = {} mm3".format(self.
WplzWplz/mm3_unit))
162 print(
"Iy_mod = {} mm4".format(self.
Iy_modIy_mod/mm4_unit))
163 print(
"iy = {} mm".format(self.
iyiy/mm_unit))
164 print(
"iz = {} mm".format(self.
iziz/mm_unit))
165 print(
"My = {} kNm".format(self.
MyMy/kNm_unit))
166 print(
"Npl = {} kN".format(self.
NplNpl/kN_unit))
172 Compute the area of a double symmetric I-profile section with fillets.
174 @returns float: Area of the I shape section (
with fillets included)
183 return 2.0*self.
bfbf*self.
tftf+self.
twtw*(self.
dd-2.0*self.
tftf)+0.8584*self.
rr**2
187 Compute the moment of inertia of a double symmetric I-profile section, with respect to its strong axis
with fillets.
189 @returns float: The moment of inertia
with respect to the strong axis.
198 return (self.
bfbf*self.
dd**3.0-(self.
bfbf-self.
twtw)*(self.
dd-2.0*self.
tftf)**3)/12.0+0.8584*self.
rr**2*(0.5*self.
dd-self.
tftf-0.4467*self.
rr/2.0)**2
202 Compute the moment of inertia of a double symmetric I-profile section, with respect to its weak axis
with fillets.
204 @returns float: The moment of inertia
with respect to the weak axis.
212 return (self.
tftf*self.
bfbf**3)/6.0+((self.
dd-2.0*self.
tftf)*self.
twtw**3)/12.0+0.8584*self.
rr**2*(0.5*self.
twtw+0.2234*self.
rr)**2
216 Compute the plastic modulus of a double symmetric I-profile section, with respect to its strong axis
with fillets.
218 @returns float: The plastic modulus
with respect to the strong axis.
226 return self.
bfbf*self.
tftf*(self.
dd-self.
tftf)+(self.
dd-2.0*self.
tftf)**2.0*(self.
twtw/4.0)+0.4292*self.
rr**2*(self.
dd-2.0*self.
tftf-0.4467*self.
rr)
230 Compute the plastic modulus of a double symmetric I-profile section, with respect to its weak axis
with fillets.
232 @returns float: The plastic modulus
with respect to the weak axis.
239 return (self.
tftf*self.
bfbf**2)/2+(self.
dd-2.0*self.
tftf)*(self.
twtw**2/4.0)+0.4292*self.
rr**2*(self.
twtw+0.4467*self.
rr)
243 Compute the gyration radius with respect to the strong axis.
245 @returns float: The gyration radius
with respect to the strong axis.
250 return math.sqrt(self.
IyIy/self.
AA)
254 Compute the gyration radius with respect to the weak axis.
256 @returns float: The gyration radius
with respect to the weak axis.
261 return math.sqrt(self.
IzIz/self.
AA)
266 Class that stores funcions, geometric and mechanical properties of RC rectangular shape profile.
267 Note that
for the validity of the formulas, at least one bar per corner
and at least one hoop closed (
with 135 degress possibly).
269 @param Section: Parent abstract
class.
271 def __init__(self, b, d, L, e, fc, D_bars, bars_position_x: np.ndarray, bars_ranges_position_y: np.ndarray, fy, Ey,
272 D_hoops, s, fs, Es, name_tag =
"Not Defined", rho_s_x = -1, rho_s_y = -1, Ec = -1):
274 The conctructor of the class.
276 @param b (float): Width of the section.
277 @param d (float): Depth of the section.
278 @param L (float): Effective length of the element associated
with this section.
279 If the panel zone
is present, exclude its dimension.
280 @param e (float): Concrete cover.
281 @param fc (float): Unconfined concrete compressive strength (cylinder test).
282 @param D_bars (float): Diameter of the reinforcing bars.
283 @param bars_position_x (np.ndarray): Array
with a range of aligned vertical reinforcing bars
for each row
in x direction.
284 Distances
from border to bar centerline, bar to bar centerlines
and
285 finally bar centerline to border
in the x direction (aligned).
286 Starting
from the left to right,
from the top range to the bottom one.
287 The number of bars
for each range can vary;
in this case, add this argument when defining the array
" dtype = object".
288 @param bars_ranges_position_y (np.ndarray): Array of dimension 1
with the position
or spacing
in y of the ranges
in bars_position_x.
289 Distances
from border to range centerlines, range to range centerlines
and
290 finally range centerline to border
in the y direction.
291 Starting
from the top range to the bottom one.
292 @param fy (float): Yield stress
for reinforcing bars.
293 @param Ey (float): Young modulus
for reinforcing bars.
294 @param D_hoops (float): Diameter of the hoops.
295 @param s (float): Centerline distance
for the hoops.
296 @param fs (float): Yield stress
for the hoops.
297 @param Es (float): Young modulus
for the hoops
298 @param name_tag (str, optional): A nametag
for the section. Defaults to
"Not Defined".
299 @param rho_s_x (float, optional): Ratio of the transversal area of the hoops to the associated concrete area
in the x direction.
300 Defaults to -1, e.g. computed
in __init__()
and ReInit() assuming one range of hoops.
301 @param rho_s_y (float, optional): Ratio of the transversal area of the hoops to the associated concrete area
in the y direction.
302 Defaults to -1, e.g. computed
in __init__()
and ReInit() assuming one range of hoops.
303 @param Ec (float, optional): Young modulus
for concrete. Defaults to -1, e.g. computed
in __init__()
and ReInit().
305 @exception NegativeValue: b needs to be positive.
306 @exception NegativeValue: d needs to be positive.
307 @exception NegativeValue: L needs to be positive.
308 @exception NegativeValue: e needs to be positive.
309 @exception PositiveValue: fc needs to be negative.
310 @exception NegativeValue: D_bars needs to be positive.
311 @exception NegativeValue: fy needs to be positive.
312 @exception NegativeValue: Ey needs to be positive.
313 @exception NegativeValue: D_hoops needs to be positive.
314 @exception NegativeValue: s needs to be positive.
315 @exception NegativeValue: fs needs to be positive.
316 @exception NegativeValue: Es needs to be positive.
317 @exception NegativeValue: rho_s_x needs to be positive
if different
from -1.
318 @exception NegativeValue: rho_s_y needs to be positive
if different
from -1.
319 @exception NegativeValue: Ec needs to be positive
if different
from -1.
320 @exception WrongDimension: Number of lists
in the list bars_position_x needs to be the same of the length of bars_ranges_position_y - 1.
321 @exception InconsistentGeometry: The sum of the distances
for each list
in bars_position_x should be equal to the section
's width (tol = 5 mm).
322 @exception InconsistentGeometry: The sum of the distances
in bars_ranges_position_y should be equal to the section
's depth (tol = 5 mm).
323 @exception InconsistentGeometry: e should be smaller than half the depth
and the width of the section.
326 if b < 0:
raise NegativeValue()
327 if d < 0:
raise NegativeValue()
328 if L < 0:
raise NegativeValue()
329 if e < 0:
raise NegativeValue()
330 if fc > 0:
raise PositiveValue()
331 if D_bars < 0:
raise NegativeValue()
332 if fy < 0:
raise NegativeValue()
333 if Ey < 0:
raise NegativeValue()
334 if D_hoops < 0:
raise NegativeValue()
335 if s < 0:
raise NegativeValue()
336 if fs < 0:
raise NegativeValue()
337 if Es < 0:
raise NegativeValue()
338 if rho_s_x != -1
and rho_s_x < 0:
raise NegativeValue()
339 if rho_s_y != -1
and rho_s_y < 0:
raise NegativeValue()
340 if Ec != -1
and Ec < 0:
raise NegativeValue()
341 if np.size(bars_position_x) != np.size(bars_ranges_position_y)-1:
raise WrongDimension()
342 geometry_tol = 5*mm_unit
343 for bars
in bars_position_x:
344 if abs(np.sum(bars) - b) > geometry_tol:
raise InconsistentGeometry()
345 if abs(np.sum(bars_ranges_position_y)-d) > geometry_tol:
raise InconsistentGeometry()
346 if e > b/2
or e > d/2:
raise InconsistentGeometry()
347 warning_min_bars =
"!!!!!!! WARNING !!!!!!! The hypothesis of one bar per corner (aligned) is not fullfilled."
348 if len(bars_position_x) < 2:
349 print(warning_min_bars)
350 elif len(bars_position_x[0]) < 3
or len(bars_position_x[-1]) < 3:
351 print(warning_min_bars)
371 self.
ReInitReInit(rho_s_x, rho_s_y, Ec)
374 def ReInit(self, rho_s_x = -1, rho_s_y = -1, Ec = -1):
376 Implementation of the homonym abstract method.
379 @param rho_s_x (float, optional): Ratio of the transversal area of the hoops to the associated concrete area
in the x direction.
380 Defaults to -1, e.g. computed assuming one range of hoops.
381 @param rho_s_y (float, optional): Ratio of the transversal area of the hoops to the associated concrete area
in the y direction.
382 Defaults to -1, e.g. computed assuming one range of hoops.
383 @param Ec (float, optional): Young modulus
for concrete. Defaults to -1, e.g. computed according to Mander et Al. 1988.
412 Implementation of the homonym abstract method.
415 self.datadata = [["INFO_TYPE",
"RCRectShape"],
416 [
"name_tag", self.
name_tagname_tag],
429 [
"D_bars", self.
D_barsD_bars],
430 [
"nr_bars", self.
nr_barsnr_bars],
434 [
"rho_bars", self.
rho_barsrho_bars],
435 [
"cl_bars", self.
cl_barscl_bars],
438 [
"D_hoops", self.
D_hoopsD_hoops],
441 [
"rho_s_x", self.
rho_s_xrho_s_x],
442 [
"rho_s_y", self.
rho_s_yrho_s_y],
443 [
"cl_hoops", self.
cl_hoopscl_hoops],
450 Implementation of the homonym abstract method.
454 print(
"Requested info for RC rectangular section of name tag = {}".format(self.
name_tagname_tag))
455 print(
"Width of the section b = {} mm".format(self.
bb/mm_unit))
456 print(
"Depth of the section d = {} mm".format(self.
dd/mm_unit))
457 print(
"Concrete cover e = {} mm".format(self.
ee/mm_unit))
458 print(
"Concrete area A = {} mm2".format(self.
AA/mm2_unit))
459 print(
"Core concrete area Ac = {} mm2".format(self.
AcAc/mm2_unit))
460 print(
"Unconfined concrete compressive strength fc = {} MPa".format(self.
fcfc/MPa_unit))
461 print(
"Young modulus for concrete Ec = {} GPa".format(self.
EcEc/GPa_unit))
462 print(
"Diameter of the reinforcing bars D_bars = {} mm and area of one bar Ay = {} mm2 with {} bars".format(self.
D_barsD_bars/mm_unit, self.
AyAy/mm2_unit, self.
nr_barsnr_bars))
463 print(
"Diameter of the hoops D_hoops = {} mm and area of one stirrup As = {} mm2".format(self.
D_hoopsD_hoops/mm_unit, self.
AsAs/mm2_unit))
464 print(
"Ratio of area of longitudinal reinforcement to area of concrete section rho_bars = {}".format(self.
rho_barsrho_bars))
465 print(
"Ratio of area of lateral reinforcement to lateral area of concrete section in x rho_s_x = {} ".format(self.
rho_s_xrho_s_x))
466 print(
"Ratio of area of lateral reinforcement to lateral area of concrete section in y rho_s_y = {} ".format(self.
rho_s_yrho_s_y))
467 print(
"Moment of inertia of the circular section (strong axis) Iy = {} mm4".format(self.
IyIy/mm4_unit))
468 print(
"Moment of inertia of the circular section (weak axis) Iz = {} mm4".format(self.
IzIz/mm4_unit))
474 Compute the number of vertical bars in the array bars_position_x (note that this list of lists can have different list sizes).
476 @returns int: Number of vertical reinforcing bars.
480 nr_bars += np.size(range)-1
487 Compute Ec using the formula from Mander et Al. 1988.
489 @returns float: Young modulus of concrete.
492 return 5000.0 * math.sqrt(-self.
fcfc/MPa_unit) * MPa_unit
497 Compute the area for a rectangular section.
499 @returns float: Total area.
501 return self.
bb * self.
dd
506 Compute the confined area (area inside the centerline of the hoops, according to Mander et Al. 1988).
508 @returns float: Confined area.
510 return self.
bcbc * self.
dcdc
515 Compute the moment of inertia of the rectangular section with respect to the strong axis.
517 @returns float: Moment of inertia (strong axis)
519 return self.
bb * self.
dd**3 / 12.0
524 Compute the moment of inertia of the rectangular section with respect to the weak axis.
526 @returns float: Moment of inertia (weak axis)
528 return self.
dd * self.
bb**3 / 12.0
533 Class that is the children of RCRectShape
and cover the specific case of square RC sections.
535 @param RCRectShape: Parent
class.
537 def __init__(self, b, L, e, fc, D_bars, bars_position_x: np.ndarray, bars_ranges_position_y: np.ndarray, fy, Ey, D_hoops, s, fs, Es, name_tag=
"Not Defined", rho_s_x=-1, rho_s_y=-1, Ec=-1):
539 Constructor of the class. It passes the arguments into the parent
class to generate the specific case of a aquare RC section.
541 @param b (float): Width/depth of the section.
542 @param L (float): Effective length of the element associated
with this section.
543 If the panel zone
is present, exclude its dimension.
544 @param e (float): Concrete cover.
545 @param fc (float): Unconfined concrete compressive strength (cylinder test).
546 @param D_bars (float): Diameter of the reinforcing bars.
547 @param bars_position_x (np.ndarray): Distances
from border to bar centerline, bar to bar centerlines
and
548 finally bar centerline to border
in the x direction (aligned).
549 Starting
from the left to right,
from the top range to the bottom one.
550 The number of bars
for each range can vary;
in this case, add this argument when defining the array
" dtype = object".
551 @param bars_ranges_position_y (np.ndarray): Distances
from border to range centerlines, range to range centerlines
and
552 finally range centerline to border
in the y direction.
553 Starting
from the top range to the bottom one.
554 @param fy (float): Yield stress
for reinforcing bars.
555 @param Ey (float): Young modulus
for reinforcing bars.
556 @param D_hoops (float): Diameter of the hoops.
557 @param s (float): Vertical centerline spacing between hoops.
558 @param fs (float): Yield stress
for the hoops.
559 @param Es (float): Young modulus
for the hoops
560 @param name_tag (str, optional): A nametag
for the section. Defaults to
"Not Defined".
561 @param rho_s_x (float, optional): Ratio of the transversal area of the hoops to the associated concrete area
in the x direction.
562 Defaults to -1, e.g. computed
in __init__()
and ReInit() assuming one range of hoops.
563 @param rho_s_y (float, optional): Ratio of the transversal area of the hoops to the associated concrete area
in the y direction.
564 Defaults to -1, e.g. computed
in __init__()
and ReInit() assuming one range of hoops.
565 @param Ec (float, optional): Young modulus
for concrete. Defaults to -1, e.g. computed
in __init__()
and ReInit().
567 super().__init__(b, b, L, e, fc, D_bars, bars_position_x, bars_ranges_position_y, fy, Ey, D_hoops, s, fs, Es, name_tag, rho_s_x, rho_s_y, Ec)
572 Class that stores funcions, geometric and mechanical properties of RC circular shape profile.
573 Note that
for the validity of the formulas, the hoops needs to be closed (
with 135 degress possibly).
575 @param Section: Parent abstract
class.
577 def __init__(self, b, L, e, fc, D_bars, n_bars: int, fy, Ey, D_hoops, s, fs, Es, name_tag =
"Not Defined", rho_s_vol = -1, Ec = -1):
579 The conctructor of the class.
581 @param b (float): Width of the section.
582 @param L (float): Effective length of the element associated
with this section.
583 If the panel zone
is present, exclude its dimension.
584 @param e (float): Concrete cover.
585 @param fc (float): Unconfined concrete compressive strength (cylinder test).
586 @param D_bars (float): Diameter of the vertical reinforcing bars.
587 @param n_bars (int): Number of vertical reinforcing bars.
588 @param fy (float): Yield stress
for reinforcing bars.
589 @param Ey (float): Young modulus
for reinforcing bars.
590 @param D_hoops (float): Diameter of the hoops.
591 @param s (float): Vertical centerline spacing between hoops.
592 @param fs (float): Yield stress
for the hoops.
593 @param Es (float): Young modulus
for the hoops
594 @param name_tag (str, optional): A nametag
for the section. Defaults to
"Not Defined".
595 @param rho_s_vol (float, optional): Ratio of the volume of transverse confining steel to the volume of confined concrete core.
596 Defaults to -1, e.g. computed according to Mander et Al. 1988.
597 @param Ec (float, optional): Young modulus
for concrete. Defaults to -1, e.g. computed
in __init__()
and ReInit().
599 @exception NegativeValue: b needs to be positive.
600 @exception NegativeValue: L needs to be positive.
601 @exception NegativeValue: e needs to be positive.
602 @exception PositiveValue: fc needs to be negative.
603 @exception NegativeValue: D_bars needs to be positive.
604 @exception NegativeValue: n_bars needs to be a positive integer.
605 @exception NegativeValue: fy needs to be positive.
606 @exception NegativeValue: Ey needs to be positive.
607 @exception NegativeValue: D_hoops needs to be positive.
608 @exception NegativeValue: s needs to be positive.
609 @exception NegativeValue: fs needs to be positive.
610 @exception NegativeValue: Es needs to be positive.
611 @exception NegativeValue: Ec needs to be positive
if different
from -1.
612 @exception InconsistentGeometry: e should be smaller than half the depth
and the width of the section.
615 if b < 0:
raise NegativeValue()
616 if L < 0:
raise NegativeValue()
617 if e < 0:
raise NegativeValue()
618 if fc > 0:
raise PositiveValue()
619 if D_bars < 0:
raise NegativeValue()
620 if n_bars < 0:
raise NegativeValue()
621 if fy < 0:
raise NegativeValue()
622 if Ey < 0:
raise NegativeValue()
623 if D_hoops < 0:
raise NegativeValue()
624 if s < 0:
raise NegativeValue()
625 if fs < 0:
raise NegativeValue()
626 if Es < 0:
raise NegativeValue()
627 if Ec != -1
and Ec < 0:
raise NegativeValue()
628 if e > b/2:
raise InconsistentGeometry()
646 self.
ReInitReInit(rho_s_vol, Ec)
649 def ReInit(self, rho_s_vol = -1, Ec = -1):
651 Implementation of the homonym abstract method.
654 @param rho_s_vol (float, optional): Ratio of the volume of transverse confining steel to the volume of confined concrete core.
655 Defaults to -1, e.g. computed according to Mander et Al. 1988.
656 @param Ec (float): Young modulus
for concrete. Defaults to -1, e.g. computed according to Mander et Al. 1988.
681 Implementation of the homonym abstract method.
684 self.datadata = [["INFO_TYPE",
"RCCircShape"],
685 [
"name_tag", self.
name_tagname_tag],
695 [
"D_bars", self.
D_barsD_bars],
696 [
"n_bars", self.
n_barsn_bars],
698 [
"rho_bars", self.
rho_barsrho_bars],
699 [
"cl_bars", self.
cl_barscl_bars],
702 [
"D_hoops", self.
D_hoopsD_hoops],
706 [
"cl_hoops", self.
cl_hoopscl_hoops],
712 Implementation of the homonym abstract method.
716 print(
"Requested info for RC circular section of name tag = {}".format(self.
name_tagname_tag))
717 print(
"Width of the section b = {} mm".format(self.
bb/mm_unit))
718 print(
"Concrete cover e = {} mm".format(self.
ee/mm_unit))
719 print(
"Concrete area A = {} mm2".format(self.
AA/mm2_unit))
720 print(
"Core concrete area Ac = {} mm2".format(self.
AcAc/mm2_unit))
721 print(
"Unconfined concrete compressive strength fc = {} MPa".format(self.
fcfc/MPa_unit))
722 print(
"Young modulus for concrete Ec = {} GPa".format(self.
EcEc/GPa_unit))
723 print(
"Diameter of the reinforcing bars D_bars = {} mm and area of one bar Ay = {} mm2 with {} bars".format(self.
D_barsD_bars/mm_unit, self.
AyAy/mm2_unit, self.
n_barsn_bars))
724 print(
"Diameter of the hoops D_hoops = {} mm and area of one stirrup As = {} mm2".format(self.
D_hoopsD_hoops/mm_unit, self.
AsAs/mm2_unit))
725 print(
"Ratio of area of longitudinal reinforcement to area of concrete section rho_bars = {} ".format(self.
rho_barsrho_bars))
726 print(
"Ratio of the volume of transverse confining steel to the volume of confined concrete core rho_s = {} ".format(self.
rho_s_volrho_s_vol))
727 print(
"Moment of inertia of the circular section I = {} mm4".format(self.
II/mm4_unit))
733 Compute the ratio of the volume of transverse confining steel to the volume of confined concrete core.
734 (according to Mander et Al. 1988).
736 @returns float: Ratio.
738 vol_s = self.AsAs*math.pi*self.bcbc
739 vol_c = math.pi/4*self.bcbc**2*self.ss
746 Compute Ec using the formula from Mander et Al. 1988.
748 @returns float: Young modulus of concrete.
751 return 5000.0 * math.sqrt(-self.
fcfc/MPa_unit) * MPa_unit
756 Compute the moment of inertia of the circular section.
758 @returns float: Moment of inertia.
760 return self.
bb**4*math.pi/64
765 Function that computes the area of one circle (reinforcing bar or hoop).
767 @param D (float): Diameter of the circle (reinforcing bar of hoop).
769 @returns float: Area the circle (
for reinforcing bars
or hoops).
771 return D**2/4.0*math.pi
776 Compute the ratio of area of a reinforcement to area of a section.
778 @param A (float): Area of reinforcement.
779 @param nr (float): Number of reinforcement (allow float
for computing ratio
with different area;
780 just convert the other areas to one
and compute the equivalent n).
781 @param A_tot (float): Area of the concrete.
783 @returns float: Ratio.
785 return nr * A / A_tot
Class that stores funcions, geometric and mechanical properties of RC circular shape profile.
def ReInit(self, rho_s_vol=-1, Ec=-1)
Implementation of the homonym abstract method.
def ComputeI(self)
Compute the moment of inertia of the circular section.
def ComputeEc(self)
Compute Ec using the formula from Mander et Al.
def ShowInfo(self)
Implementation of the homonym abstract method.
def UpdateStoredData(self)
Implementation of the homonym abstract method.
def __init__(self, b, L, e, fc, D_bars, int n_bars, fy, Ey, D_hoops, s, fs, Es, name_tag="Not Defined", rho_s_vol=-1, Ec=-1)
The conctructor of the class.
def ComputeRhoVol(self)
Compute the ratio of the volume of transverse confining steel to the volume of confined concrete core...
Class that stores funcions, geometric and mechanical properties of RC rectangular shape profile.
def ReInit(self, rho_s_x=-1, rho_s_y=-1, Ec=-1)
Implementation of the homonym abstract method.
def ComputeEc(self)
Compute Ec using the formula from Mander et Al.
def ComputeIy(self)
Compute the moment of inertia of the rectangular section with respect to the strong axis.
def ShowInfo(self)
Implementation of the homonym abstract method.
def ComputeA(self)
Compute the area for a rectangular section.
def UpdateStoredData(self)
Implementation of the homonym abstract method.
def __init__(self, b, d, L, e, fc, D_bars, np.ndarray bars_position_x, np.ndarray bars_ranges_position_y, fy, Ey, D_hoops, s, fs, Es, name_tag="Not Defined", rho_s_x=-1, rho_s_y=-1, Ec=-1)
The conctructor of the class.
def ComputeNrBars(self)
Compute the number of vertical bars in the array bars_position_x (note that this list of lists can ha...
def ComputeIz(self)
Compute the moment of inertia of the rectangular section with respect to the weak axis.
def ComputeAc(self)
Compute the confined area (area inside the centerline of the hoops, according to Mander et Al.
Class that is the children of RCRectShape and cover the specific case of square RC sections.
def __init__(self, b, L, e, fc, D_bars, np.ndarray bars_position_x, np.ndarray bars_ranges_position_y, fy, Ey, D_hoops, s, fs, Es, name_tag="Not Defined", rho_s_x=-1, rho_s_y=-1, Ec=-1)
Constructor of the class.
Parent abstract class for the storage and manipulation of a section's information (mechanical and geo...
Class that stores funcions, geometric and mechanical properties of a steel double symmetric I-shape p...
def ComputeWplz(self)
Compute the plastic modulus of a double symmetric I-profile section, with respect to its weak axis wi...
def Compute_iz(self)
Compute the gyration radius with respect to the weak axis.
def Compute_iy(self)
Compute the gyration radius with respect to the strong axis.
def __init__(self, str Type, d, bf, tf, tw, L, r, E, Fy, Fy_web=-1, name_tag="Not Defined")
The conctructor of the class.
def ComputeIy(self)
Compute the moment of inertia of a double symmetric I-profile section, with respect to its strong axi...
def ShowInfo(self)
Implementation of the homonym abstract method.
def ComputeA(self)
Compute the area of a double symmetric I-profile section with fillets.
def UpdateStoredData(self)
Implementation of the homonym abstract method.
def ReInit(self)
Implementation of the homonym abstract method.
def ComputeIz(self)
Compute the moment of inertia of a double symmetric I-profile section, with respect to its weak axis ...
def ComputeWply(self)
Compute the plastic modulus of a double symmetric I-profile section, with respect to its strong axis ...
Module with the parent abstract class DataManagement.
def ComputeACircle(D)
Function that computes the area of one circle (reinforcing bar or hoop).
def ComputeRho(A, nr, A_tot)
Compute the ratio of area of a reinforcement to area of a section.