simdesign.rcmrf.bnsm.baselib.beam
This module provides a base class for representing beams within the BNSM layer and for building and exporting their OpenSees representations.
- class simdesign.rcmrf.bnsm.baselib.beam.BeamBase(design, bondslip_factor, load_factors, cyclic_model=False, cracked_section=False)[source]
Bases:
ABCAbstract Base Class for beam implementations in BNSM layer.
This class defines the common interface and core behaviour required to: (1) define a beam member in the OpenSees domain, and (2) export equivalent Python and Tcl commands.
The member is modelled using a force-based beam-column element (
forceBeamColumn) with a plastic-hinge integration scheme (e.g.,HingeRadau). Nonlinear behaviour is concentrated within finite hinge lengths at the element ends.Hinge behaviour is defined through phenomenological moment-rotation relationships implemented using uniaxial materials and section aggregators. The interior region is represented by an elastic section, with optional use of cracked-section (effective) stiffness properties.
A bond-slip modification factor is applied when determining hinge properties (i.e., rotation capacities). Uniformly distributed gravity loads are assigned to the beam element.
Many section-level quantities are stored as
Array3values, corresponding to the (i, mid, j) sections.- Variables:
design (BeamBase) – Instance of beam design information model.
bondslip_factor (float) – Bondslip factor.
ele_node_i (Node) – Element node at the start of beam.
ele_node_j (Node) – Element node at the end of beam.
ele_load (float) – Uniformly distributed gravity load along the beam.
jnt_offsets (List[float]) – Rigid joint offset values (dx_i, dy_i, dz_i, dx_j, dy_j, dz_j), specified with respect to the global coordinate system.
cyclic_model (bool) – If True, the model parameters will be adjusted for cyclic analysis.
cracked_section (bool) – If True, the elastic sections uses cracked-section (effective) flexural properties. If False, gross-section properties are used.
_Iz_eff (float) – Effective beam moment of inertia around local-z.
- Parameters:
design (BeamBase)
bondslip_factor (float)
load_factors (Dict[Literal['G', 'Q'], float])
cyclic_model (bool)
cracked_section (bool)
Notes
Section view of beams along X direction:
Z (3) |__Y (2) -------------- ---- | y | | | | | | | z--+ | h | | | | | | -------------- ---- |---- b -----| Vectors defining the local axes in Global Coordinate System: vx = np.array([1.0, 0.0, 0.0]) vy = np.array([0.0, 0.0, 1.0]) vz = np.array([0.0, -1.0, 0.0]) vecxz = np.array([0.0, -1.0, 0.0]) Compatibility check: np.allclose(vy, np.cross(vecxz, vx)) np.allclose(vz, np.cross(vx,vy))Section view of beams along Y direction:
Z (3) |__X (1) -------------- ---- | y | | | | | | | +--z | h | | | | | | -------------- ---- |---- b -----| Vectors defining the local axes in Global Coordinate System: vx = np.array([0.0, 1.0, 0.0]) vy = np.array([0.0, 0.0, 1.0]) vz = np.array([1.0, 0.0, 0.0]) vecxz = np.array([1.0, 0.0, 0.0]) Compatibility check: np.allclose(vy, np.cross(vecxz, vx)) np.allclose(vz, np.cross(vx,vy))- property ele_tag: int
- Returns:
Tag of beam-column element representing the beam.
- Return type:
int
- property Ecm_q: float
- Returns:
Elastic young’s modulus of concrete (in base units).
- Return type:
float
Note
Based on quality adjusted concrete strength.
- property Gcm_q: float
- Returns:
Elastic shear modulus of concrete (in base units).
- Return type:
float
Note
Based on quality adjusted concrete strength.
- property rhoh_z_q: Annotated[ndarray[tuple[Any, ...], dtype[float64]], Literal[3]]
- Returns:
In situ (quality adjusted) transverse reinforcement ratio in local-z.
- Return type:
Array3[np.float64]
- property rhoh_y_q: Annotated[ndarray[tuple[Any, ...], dtype[float64]], Literal[3]]
- Returns:
In situ (quality adjusted) transverse reinforcement ratio in local-y.
- Return type:
Array3[np.float64]
- property rhol_top_q: Annotated[ndarray[tuple[Any, ...], dtype[float64]], Literal[3]]
- Returns:
In situ (quality adjusted) top longitudinal reinforcement ratio.
- Return type:
Array3[np.float64]
- property rhol_bot_q: Annotated[ndarray[tuple[Any, ...], dtype[float64]], Literal[3]]
- Returns:
In situ (quality adjusted) bottom longitudinal reinforcement ratio.
- Return type:
Array3[np.float64]
- property rhol_q: Annotated[ndarray[tuple[Any, ...], dtype[float64]], Literal[3]]
- Returns:
In situ (quality adjusted) total longitudinal reinforcement ratio.
- Return type:
Array3[np.float64]
- property rhoh_z_q_: Annotated[ndarray[tuple[Any, ...], dtype[float64]], Literal[3]]
- Returns:
In situ (quality adjusted) transverse reinforcement ratio in local-z. Computed using confined concrete dimensions.
- Return type:
Array3[np.float64]
- property rhoh_y_q_: Annotated[ndarray[tuple[Any, ...], dtype[float64]], Literal[3]]
- Returns:
In situ (quality adjusted) transverse reinforcement ratio in local-y. Computed using confined concrete dimensions.
- Return type:
Array3[np.float64]
- property rhol_top_q_: Annotated[ndarray[tuple[Any, ...], dtype[float64]], Literal[3]]
- Returns:
In situ (quality adjusted) top longitudinal reinforcement ratio. Computed using confined concrete dimensions.
- Return type:
Array3[np.float64]
- property rhol_bot_q_: Annotated[ndarray[tuple[Any, ...], dtype[float64]], Literal[3]]
- Returns:
In situ (quality adjusted) bottom longitudinal reinforcement ratio. Computed using confined concrete dimensions.
- Return type:
Array3[np.float64]
- property rhol_q_: Annotated[ndarray[tuple[Any, ...], dtype[float64]], Literal[3]]
- Returns:
In situ (quality adjusted) total longitudinal reinforcement ratio. Computed using confined concrete dimensions.
- Return type:
Array3[np.float64]
- property vecxz: List[float]
Local x-z plane vector in global coordinates for OpenSees geometric transformation.
- Returns:
(X, Y, Z) components of
vecxzused byops.geomTransfto define the local element axes.- Return type:
List[float]
Notes
For beams along global X (1): [0, -1, 0]
For beams along global Y (2): [1, 0, 0]
- property mz_i_mat_tag: int
Material tag for the i-end flexural hinge about local-z (Mz).
- property mz_j_mat_tag: int
Material tag for the j-end flexural hinge about local-z (Mz).
- property elastic_sec_tag: int
Section tag for the elastic (interior) section.
- property inelastic_sec_i_tag: int
Section tag for the inelastic (hinge) section at i-end.
- property inelastic_sec_j_tag: int
Section tag for the inelastic (hinge) section at j-end.
- property int_tag: int
Beam integration tag used by OpenSees.
- property geo_transf_tag: int
Geometric transformation tag used by OpenSees.
- bondslip_factor: float
- cyclic_model: bool
- cracked_section: bool
- ele_load: float
- jnt_offsets: List[float]
- add_to_ops()[source]
Adds beam components to the OpenSees domain (i.e, elastic beam element and nodes).
- Return type:
None
- to_py()[source]
Gets the Python commands to construct beam components in OpenSees domain (i.e, beam element and nodes).
- Returns:
List of Python commands for constructing the components of beam object in OpenSees.
- Return type:
List[str]
- to_tcl()[source]
Gets the Tcl commands to construct beam components in OpenSees domain (i.e, beam element and nodes).
- Returns:
List of Tcl commands for constructing the components of beam object in OpenSees.
- Return type:
List[str]
- add_grav_loads_to_ops()[source]
Adds gravity load objects to the OpenSees domain (i.e, uniformly distrubted loads).
- Return type:
None