OpenSeesPyAssistant 1.1
OpenSeesPy for everyone
RCRectShape Class Reference

Class that stores funcions, geometric and mechanical properties of RC rectangular shape profile. More...

Inheritance diagram for RCRectShape:
Section RCSquareShape

Public Member Functions

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. More...
 
def ComputeA (self)
 Compute the area for a rectangular section. More...
 
def ComputeAc (self)
 Compute the confined area (area inside the centerline of the hoops, according to Mander et Al. More...
 
def ComputeEc (self)
 Compute Ec using the formula from Mander et Al. More...
 
def ComputeIy (self)
 Compute the moment of inertia of the rectangular section with respect to the strong axis. More...
 
def ComputeIz (self)
 Compute the moment of inertia of the rectangular section with respect to the weak axis. More...
 
def ComputeNrBars (self)
 Compute the number of vertical bars in the array bars_position_x (note that this list of lists can have different list sizes). More...
 
def ReInit (self, rho_s_x=-1, rho_s_y=-1, Ec=-1)
 Implementation of the homonym abstract method. More...
 
def ShowInfo (self)
 Implementation of the homonym abstract method. More...
 
def UpdateStoredData (self)
 Implementation of the homonym abstract method. More...
 

Public Attributes

 A
 
 Ac
 
 As
 
 Ay
 
 b
 
 bars_position_x
 
 bars_ranges_position_y
 
 bc
 
 cl_bars
 
 cl_hoops
 
 d
 
 D_bars
 
 D_hoops
 
 data
 
 dc
 
 e
 
 Ec
 
 Es
 
 Ey
 
 fc
 
 fs
 
 fy
 
 Iy
 
 Iz
 
 L
 
 name_tag
 
 nr_bars
 
 rho_bars
 
 rho_s_x
 
 rho_s_y
 
 s
 

Detailed Description

Class that stores funcions, geometric and mechanical properties of RC rectangular shape profile.

Note that for the validity of the formulas, at least one bar per corner and at least one hoop closed (with 135 degress possibly).

Parameters
SectionParent abstract class.

Definition at line 264 of file Section.py.

Constructor & Destructor Documentation

◆ __init__()

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.

Parameters
b(float): Width of the section.
d(float): Depth of the section.
L(float): Effective length of the element associated with this section. If the panel zone is present, exclude its dimension.
e(float): Concrete cover.
fc(float): Unconfined concrete compressive strength (cylinder test).
D_bars(float): Diameter of the reinforcing bars.
bars_position_x(np.ndarray): Array with a range of aligned vertical reinforcing bars for each row in x direction. Distances from border to bar centerline, bar to bar centerlines and finally bar centerline to border in the x direction (aligned). Starting from the left to right, from the top range to the bottom one. The number of bars for each range can vary; in this case, add this argument when defining the array " dtype = object".
bars_ranges_position_y(np.ndarray): Array of dimension 1 with the position or spacing in y of the ranges in bars_position_x. Distances from border to range centerlines, range to range centerlines and finally range centerline to border in the y direction. Starting from the top range to the bottom one.
fy(float): Yield stress for reinforcing bars.
Ey(float): Young modulus for reinforcing bars.
D_hoops(float): Diameter of the hoops.
s(float): Centerline distance for the hoops.
fs(float): Yield stress for the hoops.
Es(float): Young modulus for the hoops
name_tag(str, optional): A nametag for the section. Defaults to "Not Defined".
rho_s_x(float, optional): Ratio of the transversal area of the hoops to the associated concrete area in the x direction. Defaults to -1, e.g. computed in init() and ReInit() assuming one range of hoops.
rho_s_y(float, optional): Ratio of the transversal area of the hoops to the associated concrete area in the y direction. Defaults to -1, e.g. computed in init() and ReInit() assuming one range of hoops.
Ec(float, optional): Young modulus for concrete. Defaults to -1, e.g. computed in init() and ReInit().
Exceptions
NegativeValueb needs to be positive.
NegativeValued needs to be positive.
NegativeValueL needs to be positive.
NegativeValuee needs to be positive.
PositiveValuefc needs to be negative.
NegativeValueD_bars needs to be positive.
NegativeValuefy needs to be positive.
NegativeValueEy needs to be positive.
NegativeValueD_hoops needs to be positive.
NegativeValues needs to be positive.
NegativeValuefs needs to be positive.
NegativeValueEs needs to be positive.
NegativeValuerho_s_x needs to be positive if different from -1.
NegativeValuerho_s_y needs to be positive if different from -1.
NegativeValueEc needs to be positive if different from -1.
WrongDimensionNumber of lists in the list bars_position_x needs to be the same of the length of bars_ranges_position_y - 1.
InconsistentGeometryThe sum of the distances for each list in bars_position_x should be equal to the section's width (tol = 5 mm).
InconsistentGeometryThe sum of the distances in bars_ranges_position_y should be equal to the section's depth (tol = 5 mm).
InconsistentGeometrye should be smaller than half the depth and the width of the section.

Reimplemented in RCSquareShape.

Definition at line 271 of file Section.py.

272 D_hoops, s, fs, Es, name_tag = "Not Defined", rho_s_x = -1, rho_s_y = -1, Ec = -1):
273 """
274 The conctructor of the class.
275
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().
304
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.
324 """
325 # Check
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)
352
353 # Arguments
354 self.b = b
355 self.d = d
356 self.L = L
357 self.e = e
358 self.fc = fc
359 self.D_bars = D_bars
360 self.bars_position_x = deepcopy(bars_position_x)
361 self.bars_ranges_position_y = copy(bars_ranges_position_y)
362 self.fy = fy
363 self.Ey = Ey
364 self.D_hoops = D_hoops
365 self.s = s
366 self.fs = fs
367 self.Es = Es
368 self.name_tag = name_tag
369
370 # Initialized the parameters that are dependent from others
371 self.ReInit(rho_s_x, rho_s_y, Ec)
372
373

Member Function Documentation

◆ ComputeA()

def ComputeA (   self)

Compute the area for a rectangular section.

Returns
float: Total area.

Definition at line 495 of file Section.py.

495 def ComputeA(self):
496 """
497 Compute the area for a rectangular section.
498
499 @returns float: Total area.
500 """
501 return self.b * self.d
502
503

◆ ComputeAc()

def ComputeAc (   self)

Compute the confined area (area inside the centerline of the hoops, according to Mander et Al.

1988).

Returns
float: Confined area.

Definition at line 504 of file Section.py.

504 def ComputeAc(self):
505 """
506 Compute the confined area (area inside the centerline of the hoops, according to Mander et Al. 1988).
507
508 @returns float: Confined area.
509 """
510 return self.bc * self.dc
511
512

◆ ComputeEc()

def ComputeEc (   self)

Compute Ec using the formula from Mander et Al.

1988.

Returns
float: Young modulus of concrete.

Definition at line 485 of file Section.py.

485 def ComputeEc(self):
486 """
487 Compute Ec using the formula from Mander et Al. 1988.
488
489 @returns float: Young modulus of concrete.
490 """
491
492 return 5000.0 * math.sqrt(-self.fc/MPa_unit) * MPa_unit
493
494

◆ ComputeIy()

def ComputeIy (   self)

Compute the moment of inertia of the rectangular section with respect to the strong axis.

Returns
float: Moment of inertia (strong axis)

Definition at line 513 of file Section.py.

513 def ComputeIy(self):
514 """
515 Compute the moment of inertia of the rectangular section with respect to the strong axis.
516
517 @returns float: Moment of inertia (strong axis)
518 """
519 return self.b * self.d**3 / 12.0
520
521

◆ ComputeIz()

def ComputeIz (   self)

Compute the moment of inertia of the rectangular section with respect to the weak axis.

Returns
float: Moment of inertia (weak axis)

Definition at line 522 of file Section.py.

522 def ComputeIz(self):
523 """
524 Compute the moment of inertia of the rectangular section with respect to the weak axis.
525
526 @returns float: Moment of inertia (weak axis)
527 """
528 return self.d * self.b**3 / 12.0
529
530

◆ ComputeNrBars()

def ComputeNrBars (   self)

Compute the number of vertical bars in the array bars_position_x (note that this list of lists can have different list sizes).

Returns
int: Number of vertical reinforcing bars.

Definition at line 472 of file Section.py.

472 def ComputeNrBars(self):
473 """
474 Compute the number of vertical bars in the array bars_position_x (note that this list of lists can have different list sizes).
475
476 @returns int: Number of vertical reinforcing bars.
477 """
478 nr_bars = 0
479 for range in self.bars_position_x:
480 nr_bars += np.size(range)-1
481
482 return nr_bars
483
484

◆ ReInit()

def ReInit (   self,
  rho_s_x = -1,
  rho_s_y = -1,
  Ec = -1 
)

Implementation of the homonym abstract method.

See parent class DataManagement for detailed information.

Parameters
rho_s_x(float, optional): Ratio of the transversal area of the hoops to the associated concrete area in the x direction. Defaults to -1, e.g. computed assuming one range of hoops.
rho_s_y(float, optional): Ratio of the transversal area of the hoops to the associated concrete area in the y direction. Defaults to -1, e.g. computed assuming one range of hoops.
Ec(float, optional): Young modulus for concrete. Defaults to -1, e.g. computed according to Mander et Al. 1988.

Definition at line 374 of file Section.py.

374 def ReInit(self, rho_s_x = -1, rho_s_y = -1, Ec = -1):
375 """
376 Implementation of the homonym abstract method.
377 See parent class DataManagement for detailed information.
378
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.
384 """
385 # Precompute some members
386 self.cl_hoops = self.e + self.D_hoops/2.0 # centerline distance from the border of the extreme confining hoops
387 self.cl_bars = self.e + self.D_bars/2.0 + self.D_hoops # centerline distance from the border of the corner bars
388 self.bc = self.b - self.cl_hoops*2
389 self.dc = self.d - self.cl_hoops*2
390 self.As = ComputeACircle(self.D_hoops)
391
392 # Arguments
393 self.rho_s_x = 2.0*ComputeRho(self.As, 1, self.bc*self.s) if rho_s_x == -1 else rho_s_x
394 self.rho_s_y = 2.0*ComputeRho(self.As, 1, self.dc*self.s) if rho_s_y == -1 else rho_s_y
395 self.Ec = self.ComputeEc() if Ec == -1 else Ec
396
397 # Members
398 self.nr_bars = self.ComputeNrBars()
399 self.A = self.ComputeA()
400 self.Ac = self.ComputeAc()
401 self.Ay = ComputeACircle(self.D_bars)
402 self.rho_bars = ComputeRho(self.Ay, self.nr_bars, self.A)
403 self.Iy = self.ComputeIy()
404 self.Iz = self.ComputeIz()
405
406 # Data storage for loading/saving
407 self.UpdateStoredData()
408
409
Module with the parent abstract class DataManagement.
def ComputeACircle(D)
Function that computes the area of one circle (reinforcing bar or hoop).
Definition: Section.py:763
def ComputeRho(A, nr, A_tot)
Compute the ratio of area of a reinforcement to area of a section.
Definition: Section.py:774

◆ ShowInfo()

def ShowInfo (   self)

Implementation of the homonym abstract method.

See parent class DataManagement for detailed information.

Definition at line 448 of file Section.py.

448 def ShowInfo(self):
449 """
450 Implementation of the homonym abstract method.
451 See parent class DataManagement for detailed information.
452 """
453 print("")
454 print("Requested info for RC rectangular section of name tag = {}".format(self.name_tag))
455 print("Width of the section b = {} mm".format(self.b/mm_unit))
456 print("Depth of the section d = {} mm".format(self.d/mm_unit))
457 print("Concrete cover e = {} mm".format(self.e/mm_unit))
458 print("Concrete area A = {} mm2".format(self.A/mm2_unit))
459 print("Core concrete area Ac = {} mm2".format(self.Ac/mm2_unit))
460 print("Unconfined concrete compressive strength fc = {} MPa".format(self.fc/MPa_unit))
461 print("Young modulus for concrete Ec = {} GPa".format(self.Ec/GPa_unit))
462 print("Diameter of the reinforcing bars D_bars = {} mm and area of one bar Ay = {} mm2 with {} bars".format(self.D_bars/mm_unit, self.Ay/mm2_unit, self.nr_bars))
463 print("Diameter of the hoops D_hoops = {} mm and area of one stirrup As = {} mm2".format(self.D_hoops/mm_unit, self.As/mm2_unit))
464 print("Ratio of area of longitudinal reinforcement to area of concrete section rho_bars = {}".format(self.rho_bars))
465 print("Ratio of area of lateral reinforcement to lateral area of concrete section in x rho_s_x = {} ".format(self.rho_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_y))
467 print("Moment of inertia of the circular section (strong axis) Iy = {} mm4".format(self.Iy/mm4_unit))
468 print("Moment of inertia of the circular section (weak axis) Iz = {} mm4".format(self.Iz/mm4_unit))
469 print("")
470
471

◆ UpdateStoredData()

def UpdateStoredData (   self)

Implementation of the homonym abstract method.

See parent class DataManagement for detailed information.

Definition at line 410 of file Section.py.

410 def UpdateStoredData(self):
411 """
412 Implementation of the homonym abstract method.
413 See parent class DataManagement for detailed information.
414 """
415 self.data = [["INFO_TYPE", "RCRectShape"], # Tag for differentiating different data
416 ["name_tag", self.name_tag],
417 ["b", self.b],
418 ["d", self.d],
419 ["bc", self.bc],
420 ["dc", self.dc],
421 ["L", self.L],
422 ["e", self.e],
423 ["A", self.A],
424 ["Ac", self.Ac],
425 ["Iy", self.Iy],
426 ["Iz", self.Iz],
427 ["fc", self.fc],
428 ["Ec", self.Ec],
429 ["D_bars", self.D_bars],
430 ["nr_bars", self.nr_bars],
431 ["Ay", self.Ay],
432 ["bars_position_x", self.bars_position_x],
433 ["bars_ranges_position_y", self.bars_ranges_position_y],
434 ["rho_bars", self.rho_bars],
435 ["cl_bars", self.cl_bars],
436 ["fy", self.fy],
437 ["Ey", self.Ey],
438 ["D_hoops", self.D_hoops],
439 ["s", self.s],
440 ["As", self.As],
441 ["rho_s_x", self.rho_s_x],
442 ["rho_s_y", self.rho_s_y],
443 ["cl_hoops", self.cl_hoops],
444 ["fs", self.fs],
445 ["Es", self.Es]]
446
447

Member Data Documentation

◆ A

A

Definition at line 399 of file Section.py.

◆ Ac

Ac

Definition at line 400 of file Section.py.

◆ As

As

Definition at line 390 of file Section.py.

◆ Ay

Ay

Definition at line 401 of file Section.py.

◆ b

b

Definition at line 354 of file Section.py.

◆ bars_position_x

bars_position_x

Definition at line 360 of file Section.py.

◆ bars_ranges_position_y

bars_ranges_position_y

Definition at line 361 of file Section.py.

◆ bc

bc

Definition at line 388 of file Section.py.

◆ cl_bars

cl_bars

Definition at line 387 of file Section.py.

◆ cl_hoops

cl_hoops

Definition at line 386 of file Section.py.

◆ d

d

Definition at line 355 of file Section.py.

◆ D_bars

D_bars

Definition at line 359 of file Section.py.

◆ D_hoops

D_hoops

Definition at line 364 of file Section.py.

◆ data

data

Definition at line 415 of file Section.py.

◆ dc

dc

Definition at line 389 of file Section.py.

◆ e

e

Definition at line 357 of file Section.py.

◆ Ec

Ec

Definition at line 395 of file Section.py.

◆ Es

Es

Definition at line 367 of file Section.py.

◆ Ey

Ey

Definition at line 363 of file Section.py.

◆ fc

fc

Definition at line 358 of file Section.py.

◆ fs

fs

Definition at line 366 of file Section.py.

◆ fy

fy

Definition at line 362 of file Section.py.

◆ Iy

Iy

Definition at line 403 of file Section.py.

◆ Iz

Iz

Definition at line 404 of file Section.py.

◆ L

L

Definition at line 356 of file Section.py.

◆ name_tag

name_tag

Definition at line 368 of file Section.py.

◆ nr_bars

nr_bars

Definition at line 398 of file Section.py.

◆ rho_bars

rho_bars

Definition at line 402 of file Section.py.

◆ rho_s_x

rho_s_x

Definition at line 393 of file Section.py.

◆ rho_s_y

rho_s_y

Definition at line 394 of file Section.py.

◆ s

s

Definition at line 365 of file Section.py.


The documentation for this class was generated from the following file: