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
Calculates the section extreme fibres along and perpendicular to an axis.
Calculates the plastic force above and below an axis line.
Calculates the plastic properties.
Checks that the function solver converged and if not, raises a helpful error.
Evaluates force equilibrium.
Plastic centroid algorithm.
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 suppliedSection
object.- Parameters:
- 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.
- calculate_extreme_fibres(angle: float) tuple[float, float, float, float] [source]#
Calculates the section extreme fibres along and perpendicular to an axis.
- 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
or11
) or 2 (i.e.y
or22
)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 thescipy
results objectr
- (d
,r
)- Return type:
- 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 vectoru
), 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: