simdesign.rcmrf.bnsm.baselib.column

This module provides a base class for representing columns within the BNSM layer and for building and exporting their OpenSees representations.

class simdesign.rcmrf.bnsm.baselib.column.ColumnBase(design, bondslip_factor, capacity_design, load_factors, cyclic_model=False, cracked_section=False)[source]

Bases: ABC

Abstract Base Class for column implementations in BNSM layer.

This class defines the common interface and core behaviour required to: (1) define a column member in the OpenSees domain, and (2) export equivalent Python and Tcl commands.

The column is modelled using a force-based beam-column formulation (forceBeamColumn) with a plastic-hinge integration scheme (e.g., HingeRadau). Geometric nonlinearity is accounted for through a P-Delta transformation (geomTransf('PDelta', ...)).

Nonlinear behaviour is concentrated within finite plastic-hinge regions at the element ends, while the interior region remains elastic.

Flexural response about the local axes (My and Mz) is represented by phenomenological moment-curvature relationships implemented using uniaxial Hysteretic materials and assembled into an aggregated hinge section.

When capacity_design is False, shear behaviour is additionally modelled through Pinching4 materials (for Vy and Vz), wrapped with MinMax limiters to enforce strength and deformation bounds. These shear components are included in the same aggregated hinge section.

The interior region is represented by an elastic section, with optional use of cracked-section (effective) stiffness properties derived from moment-curvature analysis.

Variables:
  • design (ColumnBase) – Instance of column design information model.

  • capacity_design (bool) – Flag to check whether capacity shear design is followed or not.

  • bondslip_factor (float) – Bondslip factor.

  • axial_force (float) – Considered axial force on column.

  • ele_node_i (Node) – Element node at the start of column.

  • ele_node_j (Node) – Element node at the end of column.

  • ele_load (float) – Uniformly distributed gravity load along the column.

  • 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.

  • cracked_section (bool) – If True, the elastic sections uses cracked-section (effective) flexural properties. If False, gross-section properties are used.

  • cyclic_model (bool) – If True, the model parameters will be adjusted for cyclic analysis.

  • _cy (float) – Neutral axis depth for shear hinge calculations in local-y.

  • _cx (float) – Neutral axis depth for shear hinge calculations in local-x.

  • _Iy_eff (float) – Effective column moment of inertia around local-y.

  • _Ix_eff (float) – Effective column moment of inertia around local-x.

Parameters:
  • design (ColumnBase)

  • bondslip_factor (float)

  • capacity_design (bool)

  • load_factors (Dict[Literal['G', 'Q'], float])

  • cyclic_model (bool)

  • cracked_section (bool)

Notes

Section view:

Y (2)
|__X (1)
    --------------    ----
    |     y      |    |
    |     |      |    |
    |  z--+      |    by
    |            |    |
    |            |    |
    --------------    ----
    |---- bx ----|

Vectors defining the local axes in Global Coordinate System:
    vx = np.array([0.0, 0.0, 1.0])
    vy = np.array([0.0, 1.0, 0.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))
ele_node_i: Node
ele_node_j: Node
property ele_tag: int
Returns:

Tag of beam-column element representing the column.

Return type:

int

property vecxz: List[float]
Returns:

X, Y, and Z components of vecxz for column elements along Z (3).

Return type:

List[float]

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 Acc: float
Returns:

Confined concrete area.

Return type:

float

property rhol_q: float
Returns:

In situ (quality adjusted) longitudinal reinforcement area ratio.

Return type:

float

property rhol_q_: float
Returns:

In situ (quality adjusted) longitudinal reinforcement area ratio. Computed using confined concrete dimensions.

Return type:

float

property rhoh_x_q: float
Returns:

In situ (quality adjusted) transverse reinforcement area (in x) ratio.

Return type:

float

property rhoh_y_q: float
Returns:

In situ (quality adjusted) transverse reinforcement area (in y) ratio.

Return type:

float

property rhoh_x_q_: float
Returns:

In situ (quality adjusted) transverse reinforcement area (in x) ratio. Computed using confined concrete dimensions.

Return type:

float

property rhoh_y_q_: float
Returns:

In situ (quality adjusted) transverse reinforcement area (in y) ratio. Computed using confined concrete dimensions.

Return type:

float

property mz_mat_tag: int

Uniaxial material tag for the flexural hinge about local-z (Mz).

property my_mat_tag: int

Uniaxial material tag for the flexural hinge about local-y (My).

property vy_mat_tag_: int

Pinching4 material tag for the shear hinge in local-y (Vy).

property vy_mat_tag: int

MinMax material tag for the shear hinge in local-y (Vy).

property vz_mat_tag_: int

Pinching4 material tag for the shear hinge in local-z (Vz).

property vz_mat_tag: int

MinMax material tag for the shear hinge in local-z (Vz).

property elastic_sec_tag: int

Section tag for the elastic (interior) section.

property inelastic_sec_tag: int

Section tag for the inelastic aggregated section.

property int_tag: int

Beam integration tag used by OpenSees.

property geo_transf_tag: int

Geometric transformation tag used by OpenSees.

design: ColumnBase
bondslip_factor: float
capacity_design: bool
cyclic_model: bool
cracked_section: bool
axial_force: float
ele_load: float
jnt_offsets: List[float]
add_to_ops()[source]

Adds column components to the OpenSees domain (i.e, column element and nodes).

Notes

Same hinge materials are used at both ends.

Return type:

None

to_py()[source]

Gets the Python commands to construct column components in OpenSees domain (i.e, column element and nodes).

Returns:

List of Python commands for constructing the components of column object in OpenSees.

Return type:

List[str]

Notes

Same hinge materials are used at both ends.

to_tcl()[source]

Gets the Tcl commands to construct column components in OpenSees domain (i.e, column element and nodes).

Returns:

List of Tcl commands for constructing the components of column object in OpenSees.

Return type:

List[str]

Notes

Same hinge materials are used at both ends.

add_grav_loads_to_ops()[source]

Adds gravity load objects to the OpenSees domain (i.e, point loads at both ends).

Return type:

None

to_py_grav_loads()[source]

Gets the Python commands to construct column gravity load object in OpenSees domain (i.e, point loads at both ends).

Returns:

List of Python commands for adding column gravity loads to OpenSees.

Return type:

List[str]

to_tcl_grav_loads()[source]

Gets the Tcl commands to construct column gravity load object in OpenSees domain (i.e, point loads at both ends).

Returns:

List of Tcl commands for adding column gravity loads to OpenSees.

Return type:

List[str]