Skip to content

ForceBeamColumnElement

ForceBeamColumnElement

ForceBeamColumnElement(ndof: int, section: Union[Section, int, str], transformation: Union[GeometricTransformation, int, str], numIntgrPts: int = 5, massDens: float = 0.0, maxIters: int = 10, tol: float = 1e-12, **kwargs)

Bases: Element

Force-based nonlinear beam-column element with distributed plasticity.

This two-node element uses OpenSees' nonlinearBeamColumn formulation to integrate section force-deformation response along the member. It supports 2D models with 3 DOFs per node and 3D models with 6 DOFs per node.

Tcl form

element nonlinearBeamColumn <tag> <iNode> <jNode> <numIntgrPts> <secTag> <transfTag> <-mass massDens> <-iter maxIters tol>

Note
  • Requires a managed section and geometric transformation with assigned tags before Tcl export.
  • The -iter parameters control the internal compatibility iteration used by the force-based formulation.

Attributes:

Name Type Description
numIntgrPts

Number of integration points along the element length.

massDens

Mass density per unit length for optional dynamic mass formation.

maxIters

Maximum compatibility iterations for the force-based solve.

tol

Convergence tolerance for the compatibility iteration.

Example
from femora.core.model import Model
import femora.components.section.beam  # noqa: F401

model = Model()
sec = model.section.beam.elastic(
    user_name="Frame",
    E=29000.0,
    A=18.0,
    Iz=400.0,
    Iy=400.0,
    G=11200.0,
    J=8.0,
)
transf = model.transformation.transformation3d(
    transf_type="Linear",
    vecxz_x=0.0,
    vecxz_y=0.0,
    vecxz_z=1.0,
)
ele = model.element.beam.force(
    ndof=6,
    section=sec,
    transformation=transf,
    numIntgrPts=5,
    maxIters=10,
    tol=1.0e-12,
)
print(ele.tag)

Create a ForceBeamColumnElement with validated dependencies.

Parameters:

Name Type Description Default
ndof int

Number of DOFs per node. Must be 3 for 2D or 6 for 3D.

required
section Union[Section, int, str]

Managed section object integrated along the member.

required
transformation Union[GeometricTransformation, int, str]

Managed geometric transformation defining the local element axis.

required
numIntgrPts int

Number of Gauss integration points along the element.

5
massDens float

Optional mass per unit length for dynamic analyses.

0.0
maxIters int

Maximum number of internal compatibility iterations.

10
tol float

Convergence tolerance for compatibility iteration.

1e-12
**kwargs

Additional element parameters stored on the base element.

{}

Raises:

Type Description
ValueError

If ndof is unsupported, if the section or transformation is missing, if integration, mass, or iteration inputs are invalid, or if dependencies cannot be resolved.

Methods:

get_mass_per_length

get_mass_per_length() -> float

Return the mass density per unit length.

Returns:

Type Description
float

Mass per unit length assigned to this element.