simdesign.rcmrf.bdim.baselib.rebars

This module provides the base class for representing the detailing of structural members in the BDIM layer.

class simdesign.rcmrf.bdim.baselib.rebars.RebarData(*, beam_longitudinal_bar_diameters, beam_transverse_bar_diameters, beam_transverse_bar_spacings, column_longitudinal_bar_diameters, column_transverse_bar_diameters, column_transverse_bar_spacings, units)[source]

Bases: BaseModel

Pydantic model for available rebar sizes and spacings.

Variables:
  • beam_longitudinal_bar_diameters (List[float]) – Possible beams longitudinal bar diameters (nominal).

  • beam_transverse_bar_diameters (List[float]) – Possible beams transverse bar diameters (nominal).

  • beam_transverse_bar_spacings (List[float]) – Possible beams transverse bar spacings.

  • column_longitudinal_bar_diameters (List[float]) – Possible columns longitudinal bar diameters (nominal).

  • column_transverse_bar_diameters (List[float]) – Possible columns transverse bar diameters (nominal).

  • column_transverse_bar_spacings (List[float]) – Possible columns transverse bar spacings.

  • units (Literal['mm', 'in']) – Units of bar diameters and spacings.

Parameters:
  • beam_longitudinal_bar_diameters (List[float])

  • beam_transverse_bar_diameters (List[float])

  • beam_transverse_bar_spacings (List[float])

  • column_longitudinal_bar_diameters (List[float])

  • column_transverse_bar_diameters (List[float])

  • column_transverse_bar_spacings (List[float])

  • units (Literal['mm', 'in'])

beam_longitudinal_bar_diameters: List[float]
beam_transverse_bar_diameters: List[float]
beam_transverse_bar_spacings: List[float]
column_longitudinal_bar_diameters: List[float]
column_transverse_bar_diameters: List[float]
column_transverse_bar_spacings: List[float]
units: Literal['mm', 'in']
class simdesign.rcmrf.bdim.baselib.rebars.RebarsBase[source]

Bases: ABC

Abstract base class for rebar detailing of structural members.

Determines rebar configurations for beams and columns. The assumptions made in these processes can have a significant impact on the final reinforcement solutions.

Variables:
  • _data_path (Path | str) – Path to the JSON file containing rebar data.

  • beam_long_bar_diams (np.ndarray) – Possible beam longitudinal bar diameters.

  • beam_trans_bar_diams (np.ndarray) – Possible beam transverse bar diameters.

  • beam_trans_bar_spacings (np.ndarray) – Possible beam transverse bar spacings.

  • col_long_bar_diams (np.ndarray) – Possible column longitudinal bar diameters.

  • col_trans_bar_diams (np.ndarray) – Possible column transverse bar diameters.

  • col_trans_bar_spacings (np.ndarray) – Possible column transverse bar spacings.

  • concrete (ConcreteBase) – Concrete material instance considered in design of beams and columns.

  • steel (SteelBase) – Steel material instance considered in design of beams and columns.

  • beam_max_sbl (float) – Maximum spacing between longitudinal bars (reinforcement) for beams.

  • beam_min_sbl (float) – Minimum spacing between longitudinal bars (reinforcement) for beams.

  • beam_max_leg_dist (float) – For beams, maximum distance between longitudinal bars within a beam section that can be considered to be confined without the need to have an extra stirrup leg around them.

  • beam_cover (float) – Concrete cover for beams.

  • col_max_sbl (float) – Maximum spacing between longitudinal bars (reinforcement) for columns.

  • col_min_sbl (float) – Minimum spacing between longitudinal bars (reinforcement) for columns.

  • col_max_leg_dist (float) – Maximum distance between longitudinal bars within a column section that can be considered to be confined without the need to have an extra stirrup leg around them.

  • col_cover (float) – Concrete cover for columns.

concrete: ConcreteBase
steel: SteelBase
beam_max_sbl: float = 2.0
beam_min_sbl: float = 0.04
beam_max_leg_dist: float = 2.0
beam_cover: float = 0.03
col_max_sbl: float = 2.0
col_min_sbl: float = 0.035
col_max_leg_dist: float = 2.0
col_cover: float = 0.03
beam_long_bar_diams: ndarray
beam_trans_bar_diams: ndarray
beam_trans_bar_spacings: ndarray
col_long_bar_diams: ndarray
col_trans_bar_diams: ndarray
col_trans_bar_spacings: ndarray
get_beam_long_rebars(Asl_top, Asl_bot, b)[source]

Select the longitudinal reinforcement solution for a generic beam with dimension b over an alignment with N sections.

Parameters:
  • Asl_top (np.ndarray) – Required longitudinal reinforcement area at top.

  • Asl_bot (np.ndarray) – Required longitudinal reinforcement area at bottom.

  • b (np.ndarray) – Beam breadth (width).

Returns:

  • dbl_t1 (np.ndarray) – Diameter of 1st type of longitudinal bars at top.

  • nbl_t1 (np.ndarray) – Number of 1st type of longitudinal bars at top.

  • dbl_t2 (np.ndarray) – Diameter of 2nd type of longitudinal bars at top.

  • nbl_t2 (np.ndarray) – Number of 2nd type of longitudinal bars at top.

  • dbl_b1 (np.ndarray) – Diameter of 1st type of longitudinal bars at bottom.

  • nbl_b1 (np.ndarray) – Number of 1st type of longitudinal bars at bottom.

  • dbl_b2 (np.ndarray) – Diameter of 2nd type of longitudinal bars at bottom.

  • nbl_b2 (np.ndarray) – Number of 2nd type of longitudinal bars at bottom.

Return type:

tuple[ndarray]

Abbreviations for rebars

  • b: rebar, bar, reinforcement

  • l: longitudinal

  • h: horizontal (transverse)

  • n: number of

  • d: diameter

Assumptions

  • Always starts with top reinforcement

  • At top or bottom of the beam sections at most two type of bars can be used (e.g., dbl_t1, dbl_t2, dbl_b1, dbl_b2).

  • The diameter of 1st type long. bar is always greater than or equal to the diameter of 2nd type long. bar (dbl1 >= dbl2). Even if 2nd diam is smaller, choose the closest one to dbl1 from the available bars.

  • dbl1’s and dbl2’s at bottom and top parts of the sections do not necessarily have to be the same. (e.g., dbl_t1=0.020, dbl_b1=0.025)

  • Along the beam which is continuous over the multiple spans maximum of two rebar diameter is allowed.

  • At the two ends of beam sections, the provided reinforcement could be different.

  • Number of 1st type longitudinal bars is equal for all the sections. Number of 1st type longitudinal bars at bottom and also at top can be minimum of two. Hence, at least four corner bars of 1st type are provided.

Example Section

           Y
           ^
           |
-----------------------     -------------
| @t1  @t2   @t2  @t1 |     |   -- cover
|                     |     |
|                     |     |
|          +          |     h
|                     |     |
|                     |     |
| @b1 @b2 @b1 @b2 @b1 |     |   -- cover
-----------------------     -------------  ----> Z
|--------- b ---------|

Asl_top = 2.Ab_@t1 + 2.Ab_@t2
Asl_bot = 3.Ab_@b1 + 2.Ab_@b2

Number of unique diameter values at a section can be one or two
unique(db_@t1), db_@t2), db_@b1), db_@b2)) = (dbl_1, dbl_2)
OR
unique(db_@t1), db_@t2), db_@b1), db_@b2)) = dbl

TODO

  1. Allow use of 3rd diameter for longitudinal reinforcement

  2. Possibly limit the number of @t1’s and @b1’s to 2 (corner bars only)

  3. Enforce continuous @t1 and @b1 (corner bars) in all beam sections.

get_beam_transv_rebars(Ash_sbh, nbl_t1, nbl_t2, nbl_b1, nbl_b2, dbl_t1, dbl_b1, b, h)[source]

Select transverse reinforcement solution for a generic beam with dimension b and h over an alignment with N sections.

Parameters:
  • Ash_sbh (np.ndarray) – Required transverse reinforcement area to spacing ratio.

  • nbl_t1 (np.ndarray) – Number of 1st type of longitudinal bars at top.

  • nbl_t2 (np.ndarray) – Number of 2nd type of longitudinal bars at top.

  • nbl_b1 (np.ndarray) – Number of 1st type of longitudinal bars at bottom.

  • nbl_b2 (np.ndarray) – Number of 2nd type of longitudinal bars at bottom.

  • dbl_t1 (np.ndarray) – Diameter of 1st type of longitudinal bars at top.

  • dbl_b1 (np.ndarray) – Diameter of 1st type of longitudinal bars at bottom.

  • b (np.ndarray) – Beam breadth (width).

  • h (np.ndarray) – Beam height (depth).

Returns:

  • dbh (np.ndarray) – Diameter of horizontal bars (transverse reinforcement).

  • sbh (np.ndarray) – Spacing of horizontal bars (transverse reinforcement).

  • nbh_parallel_b (np.ndarray) – Number of horizontal bars (stirrup legs) parallel to width.

  • nbh_parallel_h (np.ndarray) – Number of horizontal bars (stirrup legs) parallel to height.

Return type:

tuple[ndarray]

Abbreviations for rebars

  • Same as get_beam_long_rebars.

Assumptions

  • Same as get_beam_long_rebars.

get_column_long_rebars(Aslx_req, Asly_req, rhol_min, bx, by)[source]

Select the longitudinal reinforcement solution for a generic column with dimension bx and by over an alignment with N sections.

Parameters:
  • Aslx_req (np.ndarray) – Required longitudinal reinforcement area at bottom or top side of the section, In other words, required area of bars distributed along -x on one side.

  • Asly_req (np.ndarray) – Required longitudinal reinforcement area at left or right side of the section. In other words, required area of bars distributed along -y on one side.

  • rhol_min (np.ndarray) – Minimum longitudinal reinforcement ratio.

  • bx (np.ndarray) – Breadth (width) along global -x axis.

  • by (np.ndarray) – Breadth (width) along global -y axis.

Returns:

  • dbl_c (np.ndarray) – Diameter of corner longitudinal bars.

  • dbl_i (np.ndarray) – Diameter of internal longitudinal bars.

  • nbl_ix (np.ndarray) – Number of internal longitudinal bars (reinforcement) at bottom or top side of the section. In other words, half of the total number of internal longitudinal bars distributed along X (on one side of the section).

  • nbl_iy (np.ndarray) – Number of internal longitudinal bars (reinforcement) at left or right side of the section. In other words, half of the total number of internal longitudinal bars distributed along Y (on one side of the section).

Return type:

tuple[ndarray]

Abbreviations for rebars

b: rebar, bar, reinforcement l: longitudinal h: horizontal (transverse) n: number of d: diameter i: internal c: corner

Assumptions

  • All corner bars have the same diameter.

  • Corner bars are continuous over the sections.

  • All internal bars have the same diameter.

  • Internal bars may or may not be continuous.

  • Internal bars can have either the same diameters as corner bars or can have a smaller diameter which is still closest to the corner one.

Example Section

          Y
          ^
          |
-----------------------     -------------
| @c    @i    @i   @c |     |  ---- cover
|                     |     |
| @i               @i |     |
|                     |     |
| @i       +       @i |     by
|                     |     |
| @i               @i |     |
|                     |     |
| @c    @i    @i   @c |     |  ---- cover
-----------------------     -------------  ----> X
|-------- bx ---------|

Aslx_req = 2.Ab_@c + 2.Ab_@i
Asly_req = 2.Ab_@c + 3.Ab_@i

Number of unique diameter values at a section can be one or two
unique(db_@c, db_@i) = (dbl_c, dbl_i)
OR
unique(db_@c, db_@i) = dbl_c
get_column_transv_rebars(bx, by, Ashx_sbh_req, Ashy_sbh_req, dbl_c, nbl_ix, nbl_iy)[source]

Select transverse (horizontal/shear) reinforcement solution for a generic column with dimension bx and by over an alignment with N sections.

Parameters:
  • bx (np.ndarray) – Breadth (width) along global -x axis.

  • by (np.ndarray) – Breadth (width) along global -y axis.

  • Ashx_sbh_req (np.ndarray) – Required ratio of transverse reinforcement area along -x axis (i.e., parallel to -x axis) to the bar spacing.

  • Ashy_sbh_req (np.ndarray) – Required ratio of transverse reinforcement area along -y axis (i.e., parallel to -y axis) to the bar spacing.

  • dbl_c (np.ndarray) – Diameter of corner longitudinal bars.

  • nbl_ix (np.ndarray) – Number of internal longitudinal bars (reinforcement) at bottom or top side of the section. In other words, half of the total number of internal longitudinal bars distributed along X (on one side of the section).

  • nbl_iy (np.ndarray) – Number of internal longitudinal bars (reinforcement) at left or right side of the section. In other words, half of the total number of internal longitudinal bars distributed along Y (on one side of the section).

Returns:

  • dbh (np.ndarray) – Diameter of horizontal bars (transverse reinforcement).

  • sbh (np.ndarray) – Spacing of horizontal bars (transverse reinforcement).

  • nbh_x (np.ndarray) – Number of horizontal bars (stirrup legs) along -x axis.

  • nbh_y (np.ndarray) – Number of horizontal bars (stirrup legs) along -y axis.

Return type:

tuple[ndarray]

Abbreviations for rebars

  • Same as get_column_long_rebars.

Assumptions

  • Same as get_column_long_rebars.