PlasticSection#

class sectionproperties.analysis.plastic_section.PlasticSection(geometry: Geometry | CompoundGeometry)[source]#

Bases: object

Class for the plastic analysis of cross-sections.

Stores the finite element geometry and provides methods to compute the plastic section properties.

Methods

calculate_extreme_fibres

Calculates the section extreme fibres along and perpendicular to an axis.

calculate_plastic_force

Calculates the plastic force above and below an axis line.

calculate_plastic_properties

Calculates the plastic properties.

check_convergence

Checks that the function solver converged and if not, raises a helpful error.

evaluate_force_eq

Evaluates force equilibrium.

pc_algorithm

Plastic centroid algorithm.

print_verbose

Prints information related to the plastic solver convergence to the terminal.

__init__(geometry: Geometry | CompoundGeometry) None[source]#

Inits the PlasticSection class.

Parameters:

geometry (Geometry | CompoundGeometry) – Section geometry object

calculate_plastic_properties(section: Section, verbose: bool, progress: Progress | None = None) None[source]#

Calculates the plastic properties.

Calculates the location of the plastic centroid with respect to the centroidal and principal bending axes, the plastic section moduli and shape factors.

Stores the results in the SectionProperties object belonging to the supplied Section object.

Parameters:
  • section (Section) – Cross-section object containing the same geometry as this PlasticSection object

  • verbose (bool) – If set to True, prints convergence information to the terminal

  • progress (Progress | None) – Rich progress object

Raises:

RuntimeError – A geometric analysis has not yet been performed

check_convergence(root_result: RootResults, axis: str) None[source]#

Checks that the function solver converged and if not, raises a helpful error.

Parameters:
  • root_result (RootResults) – Result object from the root finder

  • axis (str) – Axis being considered by the function solver

Raises:

RuntimeError – If the function solver did not converge

print_verbose(d: float, root_result: RootResults, axis: str) None[source]#

Prints information related to the plastic solver convergence to the terminal.

Parameters:
  • d (float) – Location of the plastic centroid axis

  • root_result (RootResults) – Result object from the root finder

  • axis (str) – Axis being considered by the function solver

calculate_extreme_fibres(angle: float) tuple[float, float, float, float][source]#

Calculates the section extreme fibres along and perpendicular to an axis.

Parameters:

angle (float) – Angle (in degrees) along which to calculate the extreme fibre locations

Returns:

The location of the extreme fibres parallel (u) and perpendicular (v) to the axis, (u_min, u_max, v_min, v_max)

Return type:

tuple[float, float, float, float]

pc_algorithm(u: tuple[float, float], dlim: tuple[float, float], axis: int, verbose: bool) tuple[float, RootResults][source]#

Plastic centroid algorithm.

An algorithm used for solving for the location of the plastic centroid. The algorithm searches for the location of the axis within the section depth (defined by unit vector u) that satisfies force equilibrium.

Parameters:
  • u (tuple[float, float]) – Unit vector pointing in the direction of the axis

  • dlim (tuple[float, float]) – Distances from the centroid to the extreme fibres perpendicular to the axis (dmax, dmin)

  • axis (int) – The current axis direction, 1 (i.e. x or 11) or 2 (i.e. y or 22)

  • verbose (bool) – If set to True, prints convergence information to the terminal

Returns:

The perpendicular distance from the origin to the plastic centroid axis d, and the scipy results object r - (d, r)

Return type:

tuple[float, RootResults]

evaluate_force_eq(d: float, u: tuple[float, float], u_p: tuple[float, float], verbose: bool) float[source]#

Evaluates force equilibrium.

Given a perpendicular distance d from the origin to an axis (defined by unit vector u), calculates the force equilibrium between forces above and below that axis. The resultant force as a ratio of the total force, is returned.

Parameters:
  • d (float) – Perpendicular distance from the origin to the current axis

  • u (tuple[float, float]) – Unit vector defining the direction of the axis

  • u_p (tuple[float, float]) – Unit vector perpendicular to the direction of the axis

  • verbose (bool) – If set to True, prints convergence information to the terminal

Returns:

The force equilibrium norm

Return type:

float

calculate_plastic_force(u: tuple[float, float], p: tuple[float, float]) tuple[float, float][source]#

Calculates the plastic force above and below an axis line.

Sums the forces above and below the axis line defined by unit vector u and point p.

Parameters:
Returns:

Force in the above and below the axis line (f_top, f_bot)

Return type:

tuple[float, float]