pycba.analysis#

PyCBA - Continuous Beam Analysis

Implements the direct stiffness method for linear-elastic continuous beam analysis. The primary entry point is BeamAnalysis, which assembles the global stiffness matrix, applies boundary conditions (including prescribed displacements / support settlements), solves for nodal displacements, and recovers reactions and member load effects.

PyCBA is unit-agnostic. No conversions are performed; any internally consistent set of units (e.g. kN/m/kNm, or N/mm/Nmm) may be used as long as all inputs share the same system. The only exception is BeamAnalysis.plot_results(), which scales deflections by 1×10³ and labels the axis “mm” — that label is only correct when the length unit is metres.

Sign conventions#

  • Vertical displacements and forces: positive upward.

  • Rotations and moments: positive counter-clockwise.

  • Settlement (prescribed displacement): negative value = downward.

  • UDL / point loads: positive value = downward acting load.

  • Moment loads: positive value = counter-clockwise.

Restraint vector R#

One entry per nodal DOF (vertical then rotational, node by node):

  • -1 — fully fixed (zero displacement unless overridden by D).

  • 0 — free.

  • +k — elastic spring with stiffness k in consistent force/length (translational) or force·length/angle (rotational) units.

An OO Python adaptation of CBA, originally written for MATLAB: http://www.colincaprani.com/programming/matlab/

Classes

BeamAnalysis

Direct-stiffness continuous beam analyser.