simdesign.rcmrf.bnsm.baselib.joint

This module provides base classes for representing beam-column joints within the BNSM layer.

The module includes:

  • JointBase: abstract interface for joint objects, including access to design properties and common functionality.

  • StairsJointBase: mid-storey (stairs) joint implementation that creates a central joint node used to connect offset beam and column elements.

  • FloorJointBase: floor-level joint implementation that can optionally model joint flexibility (rigid, elastic, or inelastic).

class simdesign.rcmrf.bnsm.baselib.joint.JointBase[source]

Bases: ABC

Abstract base class for beam-column joint implementations in the BNSM layer.

design

Instance of joint design information model.

Type:

JointDesign

property bx: float

Joint width along global x-axis.

Returns:

Joint width along global x-axis (based on columns’ section widths).

Return type:

float

property by: float

Joint width along global y-axis.

Returns:

Joint width along global y-axis (based on columns’ section widths).

Return type:

float

property h: float

Joint height based on all beam section heights.

Returns:

Joint height based on all beam section heights.

Return type:

float

Notes

The largest of the beam heights is selected.

property fcm: float

Mean concrete compressive strength.

Returns:

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

Return type:

float

abstractmethod add_to_ops()[source]

Adds joint model objects to the OpenSees domain.

Return type:

None

abstractmethod to_py()[source]

Gets the Python commands to define joint model objects in the OpenSees domain.

Returns:

List of Python commands for constructing the components of joint in OpenSees.

Return type:

List[str]

abstractmethod to_tcl()[source]

Gets the Tcl commands to define joint model objects in the OpenSees domain.

Returns:

List of Tcl commands for constructing the components of joint in OpenSees.

Return type:

List[str]

class simdesign.rcmrf.bnsm.baselib.joint.StairsJointBase(design, mass)[source]

Bases: JointBase

Base class implementation used in the BNSM layer to represent beam-column joints at a mid-storey level (stairs joint). It provides methods to define a stairs joint in the OpenSees domain and to export equivalent Python and Tcl commands.

The mid-storey joint modelling approach follows macro-model formulations, where joint behaviour is represented through rotational springs based on O’Reilly 2016.

References

O’Reilly, G. J. (2016). Performance-based seismic assessment and retrofit of existing RC frame buildings in Italy (Doctoral dissertation, IUSS Pavia).

Parameters:
center_node

Central joint node for connecting nodes at joint offset distances.

Type:

Node

See also

JointBase

Base class joint definition extended by this class.

add_to_ops()[source]

Adds stairs joint model objects to the OpenSees domain (i.e., nodes).

Return type:

None

to_py()[source]

Gets the Python commands to define stairs joint model objects in the OpenSees domain (i.e., joint node).

Returns:

List of Python commands for constructing the components of stairs joint in OpenSees.

Return type:

List[str]

to_tcl()[source]

Gets the Tcl commands to define stairs joint model objects in the OpenSees domain (i.e., joint node).

Returns:

List of Tcl commands for constructing the components of stairs joint in OpenSees.

Return type:

List[str]

class simdesign.rcmrf.bnsm.baselib.joint.FloorJointBase(design, mass, model, load_factors)[source]

Bases: StairsJointBase

Base class implementation used in the BNSM layer to represent beam-column joints at a floor level. It provides methods to define an floor-level joint in the OpenSees domain and to export equivalent Python and Tcl commands.

Parameters:
  • design (JointBase)

  • mass (float)

  • model (Literal['inelastic', 'elastic', 'rigid'])

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

floor_node

Beam-side joint node which is constrained by the floor diaphragm. Beams frame into this node while columns frame into the center node, so the joint flexibility element between them acts as a scissors spring (O’Reilly & Sullivan, 2019). Same as center node for rigid joints.

Type:

Node

flexibility_model

Joint flexibility model.

Type:

Literal[‘inelastic’, ‘elastic’, ‘rigid’]

axial_force

Axial force acting on joint.

Type:

float

See also

StairsJointBase

Mid-storey (stairs) joint definition that this class extends.

property mz_tag: int

Material tag for the joint hinge about global-z (Mz).

Returns:

Material tag for the joint hinge about global-z (Mz).

Return type:

int

property my_tag: int

Material tag for the joint hinge about global-y (My).

Returns:

Material tag for the joint hinge about global-y (My).

Return type:

int

property mz_base_tag: int

Tag of the material wrapped by the Mz MinMax material.

Returns:

Tag of the material wrapped by the Mz MinMax material.

Return type:

int

property my_base_tag: int

Tag of the material wrapped by the My MinMax material.

Returns:

Tag of the material wrapped by the My MinMax material.

Return type:

int

property axial_tag: int

Material tag for the joint axial spring.

Returns:

Material tag for the joint axial spring.

Return type:

int

property sec_tag: int

Tag of aggregated beam-column joint element section.

Returns:

Tag of aggregated beam-column joint element section.

Return type:

int

property ele_tag: int

Tag of beam-column joint element.

Returns:

Tag of beam-column joint element.

Return type:

int

property fcm: float

Mean concrete compressive strength.

Returns:

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

Return type:

float

property hstorey: float

Internal storey height.

Returns:

Internal storey height.

Return type:

float

Notes

The equations were derived using constant storey height. If possible the average one is used.

add_to_ops()[source]

Adds floor joint model objects to the OpenSees domain (i.e., joint nodes and flexibility element).

Return type:

None

to_py()[source]

Gets the Python commands to define floor joint model objects in the OpenSees domain (i.e., joint nodes and flexibility element).

Returns:

List of Python commands for constructing the components of floor joint in OpenSees.

Return type:

List[str]

to_tcl()[source]

Gets the Tcl commands to define floor joint model objects in the OpenSees domain (i.e., joint nodes and flexibility element).

Returns:

List of Tcl commands for constructing the components of floor joint in OpenSees.

Return type:

List[str]