Source code for simdesign.rcmrf.bdim.eu_cdh.rebars

"""This module provides the rebars class implementation representing the
detailing of structural members for the``eu_cdh`` design class in the BDIM
layer.
"""
# Imports from installed packages
import numpy as np
from pathlib import Path

# Imports from bdim base library
from ..baselib.rebars import RebarsBase
from .materials import Concrete, Steel

# Imports from utils library
from ....utils.units import mm


[docs] class Rebars(RebarsBase): """Rebars implementation for design class ``eu_cdh``. This class extends ``RebarsBase`` by providing the detailing rules appropriate for the ``eu_cdh`` design class. Attributes ---------- concrete : ~simdesign.rcmrf.bdim.eu_cdh.materials.Concrete Concrete material instance considered in design of beams and columns. steel : ~simdesign.rcmrf.bdim.eu_cdh.materials.Steel Steel material instance considered in design of beams and 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. The default value is set as the minimum of the two following clauses: - EC2-1-1 clause 9.5.3 (6): 150 mm for corner bars - EC8-1 clause 5.4.3.2.2 (11) b): 200 mm for interior bars _data_path : Path | str Path to the json file containing rebar data. See Also -------- :class:`~bdim.baselib.rebars.RebarsBase` Base class defining the core behaviour and configuration. References ---------- Comité Européen de Normalisation, CEN (2004). Eurocode 2: Design of Concrete Structures — Part 1-1: General Rules and Rules for Buildings. European Committee for Standardization, Brussels, Belgium. Comité Européen de Normalisation, CEN (2004). Eurocode 8: Design of Structures for Earthquake Resistance — Part 1: General Rules, Seismic Actions and Rules for Buildings. European Committee for Standardization, Brussels, Belgium. """ concrete: Concrete steel: Steel col_max_leg_dist: float = 150 * mm _data_path = Path(__file__).parent / 'data' / 'rebars.json' def _get_min_beam_dbh(self, **kwargs) -> float | np.ndarray: """Get the minimum transverse reinforcement diameter in beams. Returns ------- float | np.ndarray Minimum transverse reinforcement diameter. Notes ----- Based on EN 1992-1-1:2004 clause 9.5.3(1). """ dbl = kwargs['dbl'] return np.maximum(dbl / 4, 6 * mm) def _get_min_col_dbh(self, **kwargs) -> float | np.ndarray: """Get the minimum transverse reinforcement diameter in columns. Returns ------- float | np.ndarray Minimum transverse reinforcement diameter. Notes ----- Based on EN 1992-1-1:2004 clause 9.5.3(1). """ dbl = kwargs['dbl'] return np.maximum(dbl / 4, 6 * mm) def _get_beam_max_sbh(self, **kwargs) -> float | np.ndarray: """Get maximum spacing between horizontal bars (transverse reinforcement) for beams. Returns ------- float | np.ndarray Maximum spacing between transverse reinforcement. Notes ----- Based on EN 1998-1:2004 eqn. 5.13 """ # maximum allowed spacing in current iteration h = kwargs['h'] # beam depth dbh = kwargs['dbh'] # transverse reinf. diameter dbl = kwargs['dbl'] # long. reinf. diameter max_sbh = np.minimum( np.minimum(225 * mm, h / 4), np.minimum(24 * dbh, 8 * dbl) ) return max_sbh def _get_col_max_sbh(self, **kwargs) -> float | np.ndarray: """Get maximum spacing between horizontal bars (transverse reinforcement) for columns. Returns ------- float | np.ndarray Maximum spacing between transverse reinforcement. Notes ----- Based on EN 1998-1:2004 eqn. 5.18 """ # maximum allowed spacing in current iteration by = kwargs['by'] # column width along y bx = kwargs['bx'] # column width along x cover = kwargs['cover'] b0 = np.minimum(by, bx) - 2 * cover dbl = kwargs["dbl"] # long. reinf. diameter max_sbh = np.minimum(np.minimum(b0 / 2, 175 * mm), 8 * dbl) return max_sbh