simdesign.rcmrf.bdim.baselib.beam

This module provides the base class for representing the beams within the BDIM layer.

class simdesign.rcmrf.bdim.baselib.beam.BeamForces(M1, M5, M9, V1, V5, V9, case=None)[source]

Bases: object

Data class for storing element forces.

Variables:
  • M1 (float) – Moment around local-z at 1st gauss point (start-section).

  • M5 (float) – Moment around local-z at 5th gauss point (mid-section).

  • M9 (float) – Moment around local-z at 9th gauss point (end-section).

  • V1 (float) – Shear in local-y at 1st gauss point (start-section).

  • V5 (float) – Shear in local-y at 5th gauss point (mid-section).

  • V9 (float) – Shear in local-y at 9th gauss point (end-section).

  • case (Literal['gravity', 'seismic', None], optional) – Type of load combination if forces are computed for a combo, otherwise None. By default None.

Parameters:
  • M1 (float)

  • M5 (float)

  • M9 (float)

  • V1 (float)

  • V5 (float)

  • V9 (float)

  • case (Literal['gravity', 'seismic', None])

M1: float
M5: float
M9: float
V1: float
V5: float
V9: float
case: Literal['gravity', 'seismic', None] = None
class simdesign.rcmrf.bdim.baselib.beam.BeamEnvelopeForces(M1_neg, M5_neg, M9_neg, M1_pos, M5_pos, M9_pos, V1, V5, V9)[source]

Bases: object

Data class for storing element envelope forces.

Variables:
  • M1_neg (float) – Negative moment envelope around local-z at 1st gauss point (start-section).

  • M5_neg (float) – Negative moment envelope around local-z at 5th gauss point (mid-section).

  • M9_neg (float) – Negative moment envelope around local-z at 9th gauss point (end-section).

  • M1_pos (float) – Positive moment envelope around local-z at 1st gauss point (start-section).

  • M5_pos (float) – Positive moment envelope around local-z at 5th gauss point (mid-section).

  • M9_pos (float) – Positive moment envelope around local-z at 9th gauss point (end-section).

  • V1 (float) – Shear envelope in local-y at 1st gauss point (start-section).

  • V5 (float) – Shear envelope in local-y at 5th gauss point (mid-section).

  • V9 (float) – Shear envelope in local-y at 9th gauss point (end-section).

Parameters:
  • M1_neg (float)

  • M5_neg (float)

  • M9_neg (float)

  • M1_pos (float)

  • M5_pos (float)

  • M9_pos (float)

  • V1 (float)

  • V5 (float)

  • V9 (float)

M1_neg: float
M5_neg: float
M9_neg: float
M1_pos: float
M5_pos: float
M9_pos: float
V1: float
V5: float
V9: float
class simdesign.rcmrf.bdim.baselib.beam.BeamBase(line, typology, gamma_rc)[source]

Bases: ABC

Abstract base class for beams.

Must be inherited by design-class-specific beams.

Variables:
  • ok (bool) – Flag to check section adequacy.

  • line (Line) – Line representation of beam (tag and points).

  • h (float) – Beam height (depth).

  • b (float) – Beam breadth (width).

  • steel (SteelBase) – Steel material.

  • concrete (ConcreteBase) – Concrete material.

  • typology (Literal[1, 2]) – Beam typology: 1 for wide beams, 2 for emergent beams.

  • exterior (bool) – True if the beam is exterior.

  • slab_wg (List[float]) – Uniformly distributed permanent loads transferred from slabs.

  • slab_wq (List[float]) – Uniformly distributed variable loads transferred from slabs.

  • slab_alpha (List[float]) – Beam load distribution coefficients, alpha.

  • stairs_wg (float) – Uniformly distributed permanent loads transferred from stairs.

  • stairs_wq (float) – Uniformly distributed variable loads transferred from stairs.

  • infill_wg (float) – Infill loading on beams.

  • gamma_rc (float) – Reinforced concrete unit weight.

  • pre_Md (float) – Bending moment for preliminary design.

  • pre_Vd (float) – Shear force for preliminary design.

  • forces (Dict[str, BeamForces]) – Dictionary containing forces obtained from unique load cases (in load combos), e.g., ‘G’, ‘Q’, ‘E+X’, ‘E-X’, ‘E+Y’, ‘E-Y’.

  • design_forces (List[BeamForces]) – List of forces obtained from each load combination (design forces).

  • pre_h (float) – Preliminary design beam height.

  • pre_b (float) – Preliminary design beam breadth (width).

  • cover (float) – Concrete cover.

  • columns (List[ColumnBase | None]) – Columns connected to beam end nodes i and j: [Ci_top, Ci_bot, Cj_top, Cj_bot]. Columns which are not found are equal to None.

  • Asl_top_req (Array3[np.float64]) – Required longitudinal reinforcement area at top.

  • Asl_bot_req (Array3[np.float64]) – Required longitudinal reinforcement area at bottom.

  • Ash_sbh_req (Array3[np.float64]) – Required transverse reinforcement area to spacing ratio.

  • dbl_t1 (Array3[np.float64]) – Diameter of top corner longitudinal bars.

  • nbl_t1 (Array3[np.int64]) – Number of top corner longitudinal bars.

  • dbl_t2 (Array3[np.float64]) – Diameter of top internal longitudinal bars.

  • nbl_t2 (Array3[np.int64]) – Number of top internal longitudinal bars.

  • dbl_b1 (Array3[np.float64]) – Diameter of bottom corner longitudinal bars.

  • nbl_b1 (Array3[np.int64]) – Number of bottom corner longitudinal bars.

  • dbl_b2 (Array3[np.float64]) – Diameter of bottom internal longitudinal bars.

  • nbl_b2 (Array3[np.int64]) – Number of bottom internal longitudinal bars.

  • dbh (Array3[np.float64]) – Diameter of horizontal bars (transverse reinforcement).

  • sbh (Array3[np.float64]) – Spacing of horizontal bars (transverse reinforcement).

  • nbh_b (Array3[np.int64]) – Number of horizontal bars (stirrup legs) parallel to section width.

  • nbh_h (Array3[np.int64]) – Number of horizontal bars (stirrup legs) parallel to section height.

  • MIN_H_EB (float) – Default minimum height (depth) of emergent beams.

  • MIN_B_EB (float) – Default minimum breadth (width) of emergent beams.

  • MAX_B_EB (float) – Default maximum breadth (width) of emergent beams.

  • MAX_H_EB (float) – Default maximum height (depth) of emergent beams.

  • MIN_H_WB (float) – Default minimum height (depth) of wide beams.

  • MIN_B_WB (float) – Default minimum breadth (width) of wide beams.

  • MAX_B_WB (float) – Default maximum breadth (width) of wide beams.

  • MAX_H_WB (float) – Default maximum height (depth) of wide beams.

  • B_INCR_EB (float) – Amount of breadth increase per design iteration for emergent beams.

  • H_INCR_EB (float) – Amount of height increase per design iteration for emergent beams.

  • B_INCR_WB (float) – Amount of breadth increase per design iteration for wide beams.

  • H_INCR_WB (float) – Amount of height increase per design iteration for wide beams.

  • MAX_ASPECT_RATIO_EB (float) – Maximum aspect ratio (height to breadth) for emergent beams.

  • MAX_ASPECT_RATIO_WB (float) – Maximum aspect ratio (breadth to height) for wide beams.

  • fc_q (float) – In-situ (quality adjusted) concrete compressive strength.

  • fsyl_q (float) – In-situ (quality adjusted) longitudinal reinforcement yield strength.

  • fsyh_q (float) – In-situ (quality adjusted) transverse reinforcement yield strength.

  • nbh_b_q (Array3[np.int64]) – In-situ number of horizontal bars (stirrup legs) parallel to section width.

  • nbh_h_q (Array3[np.int64]) – In-situ (quality adjusted) number of horizontal bars (stirrup legs) parallel to section height.

  • dbh_q (Array3[np.float64]) – In-situ (quality adjusted) diameter of transverse bars.

  • sbh_q (Array3[np.float64]) – In-situ (quality adjusted) spacing of transverse bars.

  • cover_q (float) – In-situ (quality adjusted) concrete cover.

  • dbl_t1_q (Array3[np.float64]) – In-situ (quality adjusted) diameter of top corner longitudinal bars.

  • nbl_t1_q (Array3[np.int64]) – In-situ (quality adjusted) number of top corner longitudinal bars.

  • dbl_t2_q (Array3[np.float64]) – In-situ (quality adjusted) diameter of top internal longitudinal bars.

  • nbl_t2_q (Array3[np.int64]) – In-situ (quality adjusted) number of top internal longitudinal bars.

  • dbl_b1_q (Array3[np.float64]) – In-situ (quality adjusted) diameter of bottom corner longitudinal bars.

  • nbl_b1_q (Array3[np.int64]) – In-situ (quality adjusted) number of bottom corner longitudinal bars.

  • dbl_b2_q (Array3[np.float64]) – In-situ (quality adjusted) diameter of bottom internal longitudinal bars.

  • nbl_b2_q (Array3[np.int64]) – In-situ (quality adjusted) number of bottom internal longitudinal bars.

Parameters:
  • line (Line)

  • typology (Literal[1, 2])

  • gamma_rc (float)

Notes

Section view of beams along X direction:

Z (3)
|__Y (2)
    --------------    ----
    |     y      |    |
    |     |      |    |
    |  z--+      |    h
    |            |    |
    |            |    |
    --------------    ----
    |---- b -----|

Section view of beams along Y direction:

Z (3)
|__X (1)
    --------------    ----
    |     y      |    |
    |     |      |    |
    |     +--z   |    h
    |            |    |
    |            |    |
    --------------    ----
    |---- b -----|
steel: SteelBase
concrete: ConcreteBase
pre_Md: float
pre_Vd: float
design_forces: List[BeamForces]
pre_h: float
pre_b: float
cover: float
columns: List[ColumnBase | None]
Asl_top_req: Annotated[ndarray[tuple[Any, ...], dtype[float64]], Literal[3]]
Asl_bot_req: Annotated[ndarray[tuple[Any, ...], dtype[float64]], Literal[3]]
Ash_sbh_req: Annotated[ndarray[tuple[Any, ...], dtype[float64]], Literal[3]]
dbl_t1: Annotated[ndarray[tuple[Any, ...], dtype[float64]], Literal[3]]
nbl_t1: Annotated[ndarray[tuple[Any, ...], dtype[int64]], Literal[3]]
dbl_t2: Annotated[ndarray[tuple[Any, ...], dtype[float64]], Literal[3]]
nbl_t2: Annotated[ndarray[tuple[Any, ...], dtype[int64]], Literal[3]]
dbl_b1: Annotated[ndarray[tuple[Any, ...], dtype[float64]], Literal[3]]
nbl_b1: Annotated[ndarray[tuple[Any, ...], dtype[int64]], Literal[3]]
dbl_b2: Annotated[ndarray[tuple[Any, ...], dtype[float64]], Literal[3]]
nbl_b2: Annotated[ndarray[tuple[Any, ...], dtype[int64]], Literal[3]]
dbh: Annotated[ndarray[tuple[Any, ...], dtype[float64]], Literal[3]]
sbh: Annotated[ndarray[tuple[Any, ...], dtype[float64]], Literal[3]]
nbh_b: Annotated[ndarray[tuple[Any, ...], dtype[int64]], Literal[3]]
nbh_h: Annotated[ndarray[tuple[Any, ...], dtype[int64]], Literal[3]]
MIN_H_EB: float = 0.3
MIN_B_EB: float = 0.2
MAX_B_EB: float = 1.0
MAX_H_EB: float = 1.0
MIN_H_WB: float = 0.15
MIN_B_WB: float = 0.3
MAX_B_WB: float = 0.8
MAX_H_WB: float = 1.0
B_INCR_EB: float = 0.05
H_INCR_EB: float = 0.05
B_INCR_WB: float = 0.05
H_INCR_WB: float = 0.05
MAX_ASPECT_RATIO_EB: float = 2.0
MAX_ASPECT_RATIO_WB: float = 3.0
fc_q: float
fsyl_q: float
fsyh_q: float
nbh_b_q: Annotated[ndarray[tuple[Any, ...], dtype[int64]], Literal[3]]
nbh_h_q: Annotated[ndarray[tuple[Any, ...], dtype[int64]], Literal[3]]
dbh_q: Annotated[ndarray[tuple[Any, ...], dtype[float64]], Literal[3]]
sbh_q: Annotated[ndarray[tuple[Any, ...], dtype[float64]], Literal[3]]
cover_q: float
dbl_t1_q: Annotated[ndarray[tuple[Any, ...], dtype[float64]], Literal[3]]
nbl_t1_q: Annotated[ndarray[tuple[Any, ...], dtype[int64]], Literal[3]]
dbl_t2_q: Annotated[ndarray[tuple[Any, ...], dtype[float64]], Literal[3]]
nbl_t2_q: Annotated[ndarray[tuple[Any, ...], dtype[int64]], Literal[3]]
dbl_b1_q: Annotated[ndarray[tuple[Any, ...], dtype[float64]], Literal[3]]
nbl_b1_q: Annotated[ndarray[tuple[Any, ...], dtype[int64]], Literal[3]]
dbl_b2_q: Annotated[ndarray[tuple[Any, ...], dtype[float64]], Literal[3]]
nbl_b2_q: Annotated[ndarray[tuple[Any, ...], dtype[int64]], Literal[3]]
line: Line
gamma_rc: float
typology: Literal[1, 2]
b: float
h: float
exterior: bool
ok: bool
slab_wg: List[float]
slab_wq: List[float]
slab_alpha: List[float]
forces: Dict[str, BeamForces]
stairs_wg: float
stairs_wq: float
infill_wg: float
property fck: float

Characteristic concrete compressive strength.

Returns:

Characteristic concrete compressive strength (in base units).

Return type:

float

property fsyk: float

Characteristic steel yield strength.

Returns:

Characteristic steel yield strength (in base units).

Return type:

float

property fsym: float

Mean steel yield strength.

Returns:

Mean steel yield strength (in base units).

Return type:

float

property fcd: float

Design concrete compressive strength.

Returns:

Design value of concrete compressive strength (in base units).

Return type:

float

property fcm: float

Mean concrete compressive strength.

Returns:

Mean value of concrete compressive strength (in base units).

Return type:

float

property fsyd: float

Design steel yield strength.

Returns:

Design value of steel yield strength (in base units).

Return type:

float

property Ecm: float

Mean elastic Young’s modulus of concrete.

Returns:

Mean value of elastic Young’s modulus of concrete (in base units).

Return type:

float

property Ecd: float

Design elastic Young’s modulus of concrete.

Returns:

Design value of elastic Young’s modulus of concrete (in base units).

Return type:

float

property Gcm: float

Mean elastic shear modulus of concrete.

Returns:

Mean value of elastic shear modulus of concrete (in base units).

Return type:

float

property Gcd: float

Design elastic shear modulus of concrete.

Returns:

Design value of elastic shear modulus of concrete (in base units).

Return type:

float

property Es: float

Elastic Young’s modulus of steel.

Returns:

Elastic Young’s modulus of steel (in base units).

Return type:

float

property Ag: float

Gross cross-sectional area of the beam.

Returns:

Gross cross-sectional area of the beam.

Return type:

float

property Iy: float

Second moment of area about the y-axis.

Returns:

Moment of inertia around y-axis of the beam.

Return type:

float

property Iz: float

Second moment of area about the z-axis.

Returns:

Moment of inertia around z-axis of the beam.

Return type:

float

property Iy_eff: float

Effective (cracked) second moment of area about the y-axis.

Returns:

Moment of inertia around y-axis of the beam.

Return type:

float

property Iz_eff: float

Effective (cracked) second moment of area about the z-axis.

Returns:

Moment of inertia around z-axis of the beam.

Return type:

float

property J: float

Second polar moment of area of the beam.

Returns:

Second polar moment of area of the beam.

Return type:

float

property L: float

Beam length.

Returns:

Beam length.

Return type:

float

property elastic_nodes: List[Point]

Beam nodes (points) in the elastic model.

Returns:

Beam nodes (points) in elastic model.

Return type:

List[Point]

property self_wg: float

Self-weight per unit length.

Returns:

Beam unit weight per length.

Return type:

float

property wg_total: float

Total uniformly distributed permanent load (G).

Returns:

Summation of uniformly distributed permanent loads (G).

Return type:

float

property wg_total_alpha: float

Total permanent load (G) with alpha-factored slab contributions.

Returns:

Summation of equivalent uniformly distributed permanent loads (G).

Return type:

float

Notes

Differently from wg_total, in this case, the slab loads are factored by alpha coefficient.

property wq_total: float

Total uniformly distributed variable load (Q).

Returns:

Summation of uniformly distributed variable loads (Q).

Return type:

float

property wq_total_alpha: float

Total variable load (Q) with alpha-factored slab contributions.

Returns:

Summation of equivalent uniformly distributed variable loads (Q).

Return type:

float

Notes

Differently from wq_total, in this case, the slab loads are factored by alpha coefficient.

property simple_Mg: float

Mid-span bending moment of a simply-supported beam under permanent loads.

Returns:

Expected bending moment at mid-span of simply-supported beam due to permanent loads.

Return type:

float

property simple_Mq: float

Mid-span bending moment of a simply-supported beam under variable loads.

Returns:

Expected bending moment at mid-span of simply-supported beam due to variable loads.

Return type:

float

property simple_Vg: float

Support shear of a simply-supported beam under permanent loads.

Returns:

Expected shear force at support of a simply-supported beam due to permanent loads.

Return type:

float

property simple_Vq: float

Support shear of a simply-supported beam under variable loads.

Returns:

Expected shear force at support of a simply-supported beam due to variable loads.

Return type:

float

property direction: Literal['x', 'y'] | None

Global axis parallel to the beam’s longitudinal axis.

Returns:

Global axis which is parallel to the beam’s line (its direction).

Return type:

Literal[‘x’, ‘y’] | None

property envelope_forces: BeamEnvelopeForces

Envelope forces computed from all design load combinations.

Returns:

Envelope forces computed from design_forces.

Return type:

BeamEnvelopeForces

property rhol_top: Annotated[ndarray[tuple[Any, ...], dtype[float64]], Literal[3]]

Top longitudinal reinforcement ratio.

Returns:

Top longitudinal reinforcement ratio.

Return type:

Array3[np.float64]

property rhol_bot: Annotated[ndarray[tuple[Any, ...], dtype[float64]], Literal[3]]

Bottom longitudinal reinforcement ratio.

Returns:

Bottom longitudinal reinforcement ratio.

Return type:

Array3[np.float64]

property rhol: Annotated[ndarray[tuple[Any, ...], dtype[float64]], Literal[3]]

Total longitudinal reinforcement ratio.

Returns:

Total longitudinal reinforcement ratio.

Return type:

Array3[np.float64]

property rhol_max_tens: float

Maximum allowable longitudinal reinforcement ratio.

Returns:

Maximum longitudinal reinforcement ratio in tens. and comp. zones

Return type:

float

property rhoh_z: Annotated[ndarray[tuple[Any, ...], dtype[float64]], Literal[3]]

Transverse reinforcement ratio in local-z.

Returns:

Horizontal (transverse) reinforcement ratio in local-z.

Return type:

Array3[np.float64]

property rhoh_y: Annotated[ndarray[tuple[Any, ...], dtype[float64]], Literal[3]]

Transverse reinforcement ratio in local-y.

Returns:

Horizontal (transverse) reinforcement ratio in local-y.

Return type:

Array3[np.float64]

property max_b: float

Maximum allowed section breadth (width).

Returns:

Computed maximum allowed section breadth (width).

Return type:

float

property max_h: float

Maximum allowed section height (depth).

Returns:

Computed maximum allowed section height (depth).

Return type:

float

property min_b: float

Minimum allowed section breadth (width).

Returns:

Computed minimum allowed section breadth (width).

Return type:

float

property min_h: float

Minimum allowed section height (depth).

Returns:

Computed minimum allowed section height (depth).

Return type:

float

property mrd_pos: Annotated[ndarray[tuple[Any, ...], dtype[float64]], Literal[3]]

Design resistance moment in the positive (sagging) direction.

Returns:

Design resistance moment of beam in positive direction. Computed for start, mid, end beam sections.

Return type:

Array3[np.float64]

Notes

Required for capacity design of columns.

property mrd_neg: Annotated[ndarray[tuple[Any, ...], dtype[float64]], Literal[3]]

Design resistance moment in the negative (hogging) direction.

Returns:

Design resistance moment of beam in negative direction. Computed for start, mid, end beam sections.

Return type:

Array3[np.float64]

Notes

Required for capacity design of columns.

restore_dimensions()[source]

Restore beam dimension attributes.

b, h

Return type:

None

set_restore_point()[source]

Set the restore point for specific beam attributes.

b, h

increase_dimensions()[source]

Method used for increasing dimensions of inadequate sections.

Used in design iterations. Can be overwritten for each design class.

Notes

Usually, the beam aspect ratio is between 1.5-2.0. Hence, added aspect ratio limit for emergent beams.

Return type:

None

predesign_section_dimensions(slab_h)[source]

Perform preliminary design of beam.

This method makes initial guess for section dimensions.

Parameters:

slab_h (float) – Slab thickness.

Return type:

None

Notes

It can be overwritten for specific design classes.

validate_section_dimensions()[source]

Method for validating section dimensions against maximum.

Return type:

None

validate_longitudinal_reinforcement()[source]

Method for validating longitudinal reinforcement against maximum.

This method is intended to run after determining beam rebars.

Return type:

None

validate_transverse_reinforcement()[source]

Method for validating transverse reinforcement.

This method is intended to run after determining beam rebars.

Return type:

None

abstractmethod verify_section_adequacy()[source]

Abstract method for verifying adequacy of section dimensions.

Return type:

None

abstractmethod compute_required_longitudinal_reinforcement()[source]

Abstract method for computing required longitudinal reinforcement.

Final solution is determined after finding rebar solution to meet the detailing requirements.

Return type:

None

abstractmethod compute_required_transverse_reinforcement()[source]

Abstract method for computing required transverse reinforcement.

Final solution is determined after finding rebar solution to meet the detailing requirements.

Return type:

None