Section#

class sectionproperties.analysis.section.Section(geometry: Geometry | CompoundGeometry, time_info: bool = False)[source]#

Bases: object

Class for structural cross-sections.

Stores the finite element geometry, mesh and material information and provides methods to compute the cross-section properties.

Variables:
  • geometry (Geometry | CompoundGeometry) – Cross-section geometry

  • materials (list[Material]) – List of materials in the geometry

  • material_groups (list[MaterialGroup]) – List of class:~sectionproperties.pre.pre.MaterialGroup objects, which contain the finite elements and stress results (if applicable) for each defined material

  • mesh (dict[str, Any]) – Finite element mesh generated by triangle

  • num_nodes (int) – Number of nodes in the finite element mesh

  • elements (list[Tri6]) – List of finite element objects describing the cross-section mesh

  • mesh_search_tree (STRtree) – STRtree to enable efficient lookup of elements in the mesh

  • section_props (SectionProperties) – Class to store calculated section properties

Methods

assemble_torsion

Assembles the warping stiffness matrix.

calculate_frame_properties

Calculates section properties to be used for frame analysis.

calculate_geometric_properties

Calculates geometric (area) properties.

calculate_plastic_properties

Calculates plastic properties.

calculate_stress

Calculates cross-section stresses.

calculate_warping_properties

Calculates warping properties.

display_mesh_info

Prints mesh statistics to the command line.

display_results

Prints the results that have been calculated to the terminal.

get_area

Returns the cross-section area.

get_as

Returns the cross-section centroidal axis shear area.

get_as_p

Returns the cross-section princicpal axis shear area.

get_beta

Returns the cross-section global monosymmetry constants.

get_beta_p

Returns the cross-section principal monosymmetry constants.

get_c

Returns the cross-section elastic centroid.

get_e_eff

Returns the cross-section effective elastic modulus.

get_e_ref

Extract transformed elastic modulus from e_ref (float or material).

get_ea

Returns the cross-section axial rigidity.

get_eas

Returns modulus-weighted the cross-section centroidal axis shear area.

get_eas_p

Returns the modulus-weighted cross-section princicpal axis shear area.

get_egamma

Returns the modulus-weighted cross-section warping constant.

get_eic

Returns the modulus-weighted cross-section centroidal second moments of area.

get_eig

Returns the modulus-weighted cross-section global second moments of area.

get_eip

Returns the modulus-weighted cross-section principal second moments of area.

get_ej

Returns the modulus-weighted cross-section St Venant torsion constant.

get_eq

Returns the modulus-weighted cross-section first moments of area.

get_ez

Returns the modulus-weighted cross-section centroidal elastic section moduli.

get_ezp

Returns the modulus-weighted cross-section principal elastic section moduli.

get_g_eff

Returns the cross-section effective shear modulus.

get_gamma

Returns the cross-section warping constant.

get_ic

Returns the cross-section centroidal second moments of area.

get_ig

Returns the cross-section global second moments of area.

get_ip

Returns the cross-section principal second moments of area.

get_j

Returns the cross-section St Venant torsion constant.

get_mass

Returns the cross-section mass.

get_mp

Returns the cross-section plastic moment about the centroidal axis.

get_mp_p

Returns the cross-section plastic moment about the principal axis.

get_nu_eff

Returns the cross-section effective Poisson's ratio.

get_pc

Returns the cross-section centroidal axis plastic centroid.

get_pc_p

Returns the cross-section principal axis plastic centroid.

get_perimeter

Returns the cross-section perimeter.

get_phi

Returns the cross-section principal bending angle.

get_q

Returns the cross-section first moments of area.

get_rc

Returns the cross-section centroidal radii of gyration.

get_rp

Returns the cross-section principal radii of gyration.

get_s

Returns the cross-section centroidal plastic section moduli.

get_sc

Returns the cross-section centroidal shear centre (elasticity).

get_sc_p

Returns the cross-section principal shear centre (elasticity).

get_sc_t

Returns the cross-section centroidal shear centre (Trefftz's method).

get_sf

Returns the cross-section centroidal axis shape factors.

get_sf_p

Returns the cross-section principal axis shape factors.

get_sp

Returns the cross-section principal axis plastic section moduli.

get_stress_at_points

Calculates the stress for a list of points.

get_z

Returns the cross-section centroidal elastic section moduli.

get_zp

Returns the cross-section principal elastic section moduli.

is_composite

Returns whether or not a composite section is being analysed.

plot_centroids

Plots the calculated centroids over the mesh.

plot_mesh

Plots the finite element mesh.

plot_warping_function

Plots the warping function over the mesh.

__init__(geometry: Geometry | CompoundGeometry, time_info: bool = False) None[source]#

Inits the Section class.

The constructor extracts information from the provided mesh object and creates and stores the corresponding finite element objects.

Parameters:
  • geometry (Geometry | CompoundGeometry) – Cross-section geometry object used to generate the mesh

  • time_info (bool) – If set to True, a detailed description of the computation and the time cost is printed to the terminal for every computation performed

Raises:
  • ValueError – If geometry does not contain a mesh

  • AssertionError – If the number of materials does not equal the number of regions

calculate_geometric_properties() None[source]#

Calculates geometric (area) properties.

Calculates the geometric properties of the cross-section and stores them in the SectionProperties object contained in the section_props variable.

Note

If materials are specified for the cross-section, the moments of area and section moduli are elastic modulus weighted.

Geometric Properties

Below is a list of the section properties calculated by the calculate_geometric_properties() method:

  • Cross-sectional area

  • Cross-sectional perimeter

  • Cross-sectional mass

  • Area weighted material properties (composite only) \(E_{eff}\), \(G_{eff}\), \({\nu}_{eff}\)

  • Modulus weighted area (axial rigidity)

  • First moments of area

  • Second moments of area about the global axis

  • Second moments of area about the centroidal axis

  • Elastic centroid

  • Centroidal section moduli

  • Radii of gyration

  • Principal axis properties

calculate_warping_properties(solver_type: str = 'direct') None[source]#

Calculates warping properties.

Calculates all the warping properties of the cross-section and stores them in the SectionProperties object contained in the section_props variable.

Parameters:

solver_type (str) – Solver used for solving systems of linear equations, either using the "direct" method or "cgs" iterative method

Raises:

RuntimeError – If the geometric properties have not been calculated prior to calling this method

Note

If materials are specified, the values calculated for the torsion constant, warping constant and shear areas are elastic modulus weighted.

Warning

The geometric properties must be calculated prior to the calculation of the warping properties.

Warping Properties

Below is a list of the section properties calculated by the calculate_warping_properties() method:

  • Torsion constant

  • Shear centre

  • Shear area

  • Warping constant

  • Monosymmetry constant

calculate_frame_properties(solver_type: str = 'direct') tuple[float, float, float, float, float, float][source]#

Calculates section properties to be used for frame analysis.

Calculates and returns the properties required for a frame analysis. The properties are also stored in the SectionProperties object contained in the section_props variable.

This method is more efficient than running a geometric and warping analysis as unnecessary values are not calculated.

Parameters:

solver_type (str) – Solver used for solving systems of linear equations, either using the "direct" method or "cgs" iterative method

Returns:

Cross-section properties to be used for a frame analysis (area, ixx, iyy, ixy, j, phi)

Return type:

tuple[float, float, float, float, float, float]

Note

If materials are specified, the values calculated for the moments of area and the torsion constant are elastic modulus weighted.

Warping Properties

Below is a list of the section properties calculated by the calculate_frame_properties() method:

  • Cross-sectional area

  • Second moments of area about the centroidal axis

  • Torsion constant

  • Principal axis angle

calculate_plastic_properties(verbose: bool = False) None[source]#

Calculates plastic properties.

Calculates the plastic properties of the cross-section and stores them in the SectionProperties object contained in the section_props variable.

Parameters:

verbose (bool) – If set to True, the number of iterations required for each plastic axis is printed to the terminal.

Raises:

RuntimeError – If the geometric properties have not been calculated prior to calling this method

Note

If materials are specified, the values calculated for the plastic section moduli are displayed as plastic moments (i.e \(M_p = f_y S\)) and the shape factors are not calculated.

Warning

The geometric properties must be calculated prior to the calculation of the plastic properties.

Plastic Properties

Below is a list of the section properties calculated by the calculate_plastic_properties() method:

  • Plastic centroids (centroidal and principal axes)

  • Plastic section moduli (centroidal and principal axes)

  • Shape factors, non-composite only (centroidal and principal axe)

calculate_stress(n: float = 0.0, vx: float = 0.0, vy: float = 0.0, mxx: float = 0.0, myy: float = 0.0, m11: float = 0.0, m22: float = 0.0, mzz: float = 0.0) StressPost[source]#

Calculates cross-section stresses.

Calculates the cross-section stress resulting from design actions and returns a StressPost object allowing the post-processing of the stress results.

Parameters:
  • n (float) – Axial force

  • vx (float) – Shear force acting in the x-direction

  • vy (float) – Shear force acting in the y-direction

  • mxx (float) – Bending moment about the centroidal xx-axis

  • myy (float) – Bending moment about the centroidal yy-axis

  • m11 (float) – Bending moment about the centroidal 11-axis

  • m22 (float) – Bending moment about the centroidal 22-axis

  • mzz (float) – Torsion moment about the centroidal zz-axis

Returns:

Object for post-processing cross-section stresses

Raises:

RuntimeError – If a geometric and warping analysis (if required) have not been performed prior to calling this method

Return type:

StressPost

Note

A geometric analysis must be performed prior to performing a stress analysis. Further, if the shear force or torsion is non-zero a warping analysis must also be performed.

assemble_torsion(progress: Progress | None = None, task: TaskID | None = None) tuple[csc_matrix, ndarray[Any, dtype[float64]]][source]#

Assembles the warping stiffness matrix.

Assembles stiffness matrices to be used for the computation of warping properties and the torsion load vector (f_torsion). A Lagrangian multiplier (k_lg) stiffness matrix is returned. The stiffness matrix is assembled using the sparse COO format and returned in the sparse CSC format.

Parameters:
  • progress (Progress | None) – Rich progress object

  • task (TaskID | None) – Rich task object

Returns:

Lagrangian multiplier stiffness matrix and torsion load vector (k_lg, f_torsion)

Return type:

tuple[csc_matrix, ndarray[Any, dtype[float64]]]

plot_mesh(alpha: float = 0.5, materials: bool = True, mask: list[bool] | None = None, title: str = 'Finite Element Mesh', **kwargs: Any) matplotlib.axes.Axes[source]#

Plots the finite element mesh.

Parameters:
  • alpha (float) – Transparency of the mesh outlines: \(0 \leq \alpha \leq 1\)

  • materials (bool) – If set to True shades the elements with the specified material colors

  • mask (list[bool] | None) – Mask array, of length num_nodes, to mask out triangles

  • title (str) – Plot title

  • kwargs (Any) – Passed to plotting_context()

Returns:

Matplotlib axes object

Return type:

matplotlib.axes.Axes

Example

The following example plots the mesh for a rectanglular steel-timber composite section:

from sectionproperties.pre import Material
from sectionproperties.pre.library import rectangular_section
from sectionproperties.analysis import Section

steel = Material(
    name="Steel",
    elastic_modulus=200e3,
    poissons_ratio=0.3,
    density=7.85e-6,
    yield_strength=250,
    color="grey",
)
timber = Material(
    name="Timber",
    elastic_modulus=8e3,
    poissons_ratio=0.35,
    density=6.5e-7,
    yield_strength=20,
    color="burlywood",
)

geom_steel = rectangular_section(d=50, b=50, material=steel)
geom_timber = rectangular_section(d=50, b=50, material=timber)
geom = geom_timber.align_to(geom_steel, on="right") + geom_steel
geom.create_mesh(mesh_sizes=[10, 5])

Section(geometry=geom).plot_mesh()

(Source code, png, hires.png, pdf)

../_images/sectionproperties-analysis-section-Section-1.png

Composite section mesh#

plot_centroids(alpha: float = 0.5, title: str = 'Centroids', **kwargs: Any) matplotlib.axes.Axes[source]#

Plots the calculated centroids over the mesh.

Plots the elastic centroid, the shear centre, the plastic centroids and the principal axis, if they have been calculated, on top of the finite element mesh.

Parameters:
  • alpha (float) – Transparency of the mesh outlines: \(0 \leq \alpha \leq 1\)

  • title (str) – Plot title

  • kwargs (Any) – Passed to plotting_context()

Returns:

Matplotlib axes object

Return type:

matplotlib.axes.Axes

Example

The following example analyses a 200 PFC section and displays a plot of the centroids:

from sectionproperties.pre.library import channel_section
from sectionproperties.analysis import Section

geom = channel_section(d=200, b=75, t_f=12, t_w=6, r=12, n_r=8)
geom.create_mesh(mesh_sizes=[20])

section = Section(geometry=geom)
section.calculate_geometric_properties()
section.calculate_warping_properties()
section.calculate_plastic_properties()

section.plot_centroids()

(Source code, png, hires.png, pdf)

../_images/sectionproperties-analysis-section-Section-2.png

200PFC centroids#

plot_warping_function(title: str = 'Warping Function', level: int = 20, cmap: str = 'viridis', alpha: float = 0.2, with_lines: bool = True, **kwargs: Any) matplotlib.axes.Axes[source]#

Plots the warping function over the mesh.

Parameters:
  • title (str) – Plot title

  • level (int) – Number of contour levels

  • cmap (str) – Colormap

  • with_lines (bool) – If set to True, contour lines are displayed

  • alpha (float) – Transparency of the mesh outlines: \(0 \leq \alpha \leq 1\)

  • kwargs (Any) – Passed to plotting_context()

Raises:

RuntimeError – If a warping analysis has not been performed

Returns:

Matplotlib axes object

Return type:

matplotlib.axes.Axes

display_mesh_info() None[source]#

Prints mesh statistics to the command line.

display_results(fmt: str = '8.6e') None[source]#

Prints the results that have been calculated to the terminal.

Parameters:

fmt (str) – Number formatting string, see https://docs.python.org/3/library/string.html

is_composite() bool[source]#

Returns whether or not a composite section is being analysed.

If the only material is the default material, a regular analysis is being conducted. Otherwise, a composite analysis is being conducted.

Returns:

Whether or not a composite section is being analysed.

Return type:

bool

get_e_ref(e_ref: float | Material) float[source]#

Extract transformed elastic modulus from e_ref (float or material).

Parameters:

e_ref (float | Material) – Reference elastic modulus or material property by which to transform the results

Returns:

Transformed elastic modulus

Return type:

float

get_area() float[source]#

Returns the cross-section area.

Returns:

Cross-section area

Raises:

AssertionError – If a geometric analysis has not been performed

Return type:

float

get_perimeter() float[source]#

Returns the cross-section perimeter.

Returns:

Cross-section perimeter

Raises:

AssertionError – If a geometric analysis has not been performed

Return type:

float

get_mass() float[source]#

Returns the cross-section mass.

This is a composite only property, as such this can only be returned if material properties have been applied to the cross-section.

Returns:

Cross-section mass

Raises:
Return type:

float

get_ea(e_ref: float | Material = 1) float[source]#

Returns the cross-section axial rigidity.

This is a composite only property, as such this can only be returned if material properties have been applied to the cross-section.

This value can be transformed by providing a reference elastic modulus or a material property.

Parameters:

e_ref (float | Material) – Reference elastic modulus or material property by which to transform the results

Returns:

Modulus weighted area (axial rigidity)

Raises:
Return type:

float

get_q() tuple[float, float][source]#

Returns the cross-section first moments of area.

This is a geometric only property, as such this can only be returned if material properties have not been applied to the cross-section.

Returns:

First moments of area about the global axis (qx, qy)

Raises:
Return type:

tuple[float, float]

get_eq(e_ref: float | Material = 1) tuple[float, float][source]#

Returns the modulus-weighted cross-section first moments of area.

This is a composite only property, as such this can only be returned if material properties have been applied to the cross-section.

This value can be transformed by providing a reference elastic modulus or a material property.

Parameters:

e_ref (float | Material) – Reference elastic modulus or material property by which to transform the results

Returns:

Modulus-weighted first moments of area about the global axis (e.qx, e.qy)

Raises:
Return type:

tuple[float, float]

get_ig() tuple[float, float, float][source]#

Returns the cross-section global second moments of area.

This is a geometric only property, as such this can only be returned if material properties have not been applied to the cross-section.

Returns:

Second moments of area about the global axis (ixx_g, iyy_g, ixy_g)

Raises:
Return type:

tuple[float, float, float]

get_eig(e_ref: float | Material = 1) tuple[float, float, float][source]#

Returns the modulus-weighted cross-section global second moments of area.

This is a composite only property, as such this can only be returned if material properties have been applied to the cross-section.

This value can be transformed by providing a reference elastic modulus or a material property.

Parameters:

e_ref (float | Material) – Reference elastic modulus or material property by which to transform the results

Returns:

Modulus weighted second moments of area about the global axis (e.ixx_g, e.iyy_g, e.ixy_g)

Raises:
Return type:

tuple[float, float, float]

get_c() tuple[float, float][source]#

Returns the cross-section elastic centroid.

Returns:

Elastic centroid (cx, cy)

Raises:

AssertionError – If a geometric analysis has not been performed

Return type:

tuple[float, float]

get_ic() tuple[float, float, float][source]#

Returns the cross-section centroidal second moments of area.

This is a geometric only property, as such this can only be returned if material properties have not been applied to the cross-section.

Returns:

Second moments of area about the centroidal axis (ixx_c, iyy_c, ixy_c)

Raises:
Return type:

tuple[float, float, float]

get_eic(e_ref: float | Material = 1) tuple[float, float, float][source]#

Returns the modulus-weighted cross-section centroidal second moments of area.

This is a composite only property, as such this can only be returned if material properties have been applied to the cross-section.

This value can be transformed by providing a reference elastic modulus or a material property.

Parameters:

e_ref (float | Material) – Reference elastic modulus or material property by which to transform the results

Returns:

Modulus weighted second moments of area about the centroidal axis (e.ixx_c, e.iyy_c, e.ixy_c)

Raises:
Return type:

tuple[float, float, float]

get_z() tuple[float, float, float, float][source]#

Returns the cross-section centroidal elastic section moduli.

This is a geometric only property, as such this can only be returned if material properties have not been applied to the cross-section.

Returns:

Elastic section moduli about the centroidal axis with respect to the top and bottom fibres (zxx_plus, zxx_minus, zyy_plus, zyy_minus)

Raises:
Return type:

tuple[float, float, float, float]

get_ez(e_ref: float | Material = 1) tuple[float, float, float, float][source]#

Returns the modulus-weighted cross-section centroidal elastic section moduli.

This is a composite only property, as such this can only be returned if material properties have been applied to the cross-section.

This value can be transformed by providing a reference elastic modulus or a material property.

Parameters:

e_ref (float | Material) – Reference elastic modulus or material property by which to transform the results

Returns:

Modulus weighted elastic section moduli about the centroidal axis with respect to the top and bottom fibres (e.zxx_plus, e.zxx_minus, e.zyy_plus, e.zyy_minus)

Raises:
Return type:

tuple[float, float, float, float]

get_rc() tuple[float, float][source]#

Returns the cross-section centroidal radii of gyration.

Returns:

Radii of gyration about the centroidal axis (rx, ry)

Raises:

AssertionError – If a geometric analysis has not been performed

Return type:

tuple[float, float]

get_ip() tuple[float, float][source]#

Returns the cross-section principal second moments of area.

This is a geometric only property, as such this can only be returned if material properties have not been applied to the cross-section.

Returns:

Second moments of area about the principal axis (i11_c, i22_c)

Raises:
Return type:

tuple[float, float]

get_eip(e_ref: float | Material = 1) tuple[float, float][source]#

Returns the modulus-weighted cross-section principal second moments of area.

This is a composite only property, as such this can only be returned if material properties have been applied to the cross-section.

This value can be transformed by providing a reference elastic modulus or a material property.

Parameters:

e_ref (float | Material) – Reference elastic modulus or material property by which to transform the results

Returns:

Modulus weighted second moments of area about the principal axis (e.i11_c, e.i22_c)

Raises:
Return type:

tuple[float, float]

get_phi() float[source]#

Returns the cross-section principal bending angle.

Returns:

Principal bending axis angle

Raises:

AssertionError – If a geometric analysis has not been performed

Return type:

float

get_zp() tuple[float, float, float, float][source]#

Returns the cross-section principal elastic section moduli.

This is a geometric only property, as such this can only be returned if material properties have not been applied to the cross-section.

Returns:

Elastic section moduli about the principal axis with respect to the top and bottom fibres (z11_plus, z11_minus, z22_plus, z22_minus)

Raises:
Return type:

tuple[float, float, float, float]

get_ezp(e_ref: float | Material = 1) tuple[float, float, float, float][source]#

Returns the modulus-weighted cross-section principal elastic section moduli.

This is a composite only property, as such this can only be returned if material properties have been applied to the cross-section.

This value can be transformed by providing a reference elastic modulus or a material property.

Parameters:

e_ref (float | Material) – Reference elastic modulus or material property by which to transform the results

Returns:

Modulus weighted elastic section moduli about the principal axis with respect to the top and bottom fibres (e.z11_plus, e.z11_minus, e.z22_plus, e.z22_minus)

Raises:
Return type:

tuple[float, float, float, float]

get_rp() tuple[float, float][source]#

Returns the cross-section principal radii of gyration.

Returns:

Radii of gyration about the principal axis (r11, r22)

Raises:

AssertionError – If a geometric analysis has not been performed

Return type:

tuple[float, float]

get_nu_eff() float[source]#

Returns the cross-section effective Poisson’s ratio.

This is a composite only property, as such this can only be returned if material properties have been applied to the cross-section.

Returns:

Effective Poisson’s ratio

Raises:
Return type:

float

get_e_eff() float[source]#

Returns the cross-section effective elastic modulus.

This is a composite only property, as such this can only be returned if material properties have been applied to the cross-section.

Returns:

Effective elastic modulus based on area

Raises:
Return type:

float

get_g_eff() float[source]#

Returns the cross-section effective shear modulus.

This is a composite only property, as such this can only be returned if material properties have been applied to the cross-section.

Returns:

Effective shear modulus based on area

Raises:
Return type:

float

get_j() float[source]#

Returns the cross-section St Venant torsion constant.

This is a geometric only property, as such this can only be returned if material properties have not been applied to the cross-section.

Returns:

St. Venant torsion constant

Raises:
Return type:

float

get_ej(e_ref: float | Material = 1) float[source]#

Returns the modulus-weighted cross-section St Venant torsion constant.

This is a composite only property, as such this can only be returned if material properties have been applied to the cross-section.

This value can be transformed by providing a reference elastic modulus or a material property.

Parameters:

e_ref (float | Material) – Reference elastic modulus or material property by which to transform the results

Returns:

Modulus weighted St. Venant torsion constant

Raises:
Return type:

float

get_sc() tuple[float, float][source]#

Returns the cross-section centroidal shear centre (elasticity).

Returns:

Centroidal axis shear centre (elasticity approach) (x_se, y_se)

Raises:

AssertionError – If a warping analysis has not been performed

Return type:

tuple[float, float]

get_sc_p() tuple[float, float][source]#

Returns the cross-section principal shear centre (elasticity).

Returns:

Principal axis shear centre (elasticity approach) (x11_se, y22_se)

Raises:

AssertionError – If a warping analysis has not been performed

Return type:

tuple[float, float]

get_sc_t() tuple[float, float][source]#

Returns the cross-section centroidal shear centre (Trefftz’s method).

Returns:

Centroidal axis shear centre (Trefftz’s method) (x_st, y_st)

Raises:

AssertionError – If a warping analysis has not been performed

Return type:

tuple[float, float]

get_gamma() float[source]#

Returns the cross-section warping constant.

This is a geometric only property, as such this can only be returned if material properties have not been applied to the cross-section.

Returns:

Warping constant

Raises:
Return type:

float

get_egamma(e_ref: float | Material = 1) float[source]#

Returns the modulus-weighted cross-section warping constant.

This is a composite only property, as such this can only be returned if material properties have been applied to the cross-section.

This value can be transformed by providing a reference elastic modulus or a material property.

Parameters:

e_ref (float | Material) – Reference elastic modulus or material property by which to transform the results

Returns:

Modulus weighted warping constant

Raises:
Return type:

float

get_as() tuple[float, float][source]#

Returns the cross-section centroidal axis shear area.

This is a geometric only property, as such this can only be returned if material properties have not been applied to the cross-section.

Returns:

Shear area for loading about the centroidal axis (a_sx, a_sy)

Raises:
Return type:

tuple[float, float]

get_eas(e_ref: float | Material = 1) tuple[float, float][source]#

Returns modulus-weighted the cross-section centroidal axis shear area.

This is a composite only property, as such this can only be returned if material properties have been applied to the cross-section.

This value can be transformed by providing a reference elastic modulus or a material property.

Parameters:

e_ref (float | Material) – Reference elastic modulus or material property by which to transform the results

Returns:

Modulus weighted shear area for loading about the centroidal axis (e.a_sx, e.a_sy)

Raises:
Return type:

tuple[float, float]

get_as_p() tuple[float, float][source]#

Returns the cross-section princicpal axis shear area.

This is a geometric only property, as such this can only be returned if material properties have not been applied to the cross-section.

Returns:

Shear area for loading about the princicpal bending axis (a_s11, a_s22)

Raises:
Return type:

tuple[float, float]

get_eas_p(e_ref: float | Material = 1) tuple[float, float][source]#

Returns the modulus-weighted cross-section princicpal axis shear area.

This is a composite only property, as such this can only be returned if material properties have been applied to the cross-section.

This value can be transformed by providing a reference elastic modulus or a material property.

Parameters:

e_ref (float | Material) – Reference elastic modulus or material property by which to transform the results

Returns:

Modulus weighted shear area for loading about the princicpal bending axis (e.a_s11, e.a_s22)

Raises:
Return type:

tuple[float, float]

get_beta() tuple[float, float, float, float][source]#

Returns the cross-section global monosymmetry constants.

Returns:

Monosymmetry constants for bending about both global axes (beta_x_plus, beta_x_minus, beta_y_plus, beta_y_minus).

Return type:

tuple[float, float, float, float]

Note

The plus value relates to the top flange in compression and the minus value relates to the bottom flange in compression.

Raises:

AssertionError – If a warping analysis has not been performed

Return type:

tuple[float, float, float, float]

get_beta_p() tuple[float, float, float, float][source]#

Returns the cross-section principal monosymmetry constants.

Returns:

Monosymmetry constant for bending about both principal axes (beta_11_plus, beta_11_minus, beta_22_plus, beta_22_minus)

Return type:

tuple[float, float, float, float]

Note

The plus value relates to the top flange in compression and the minus value relates to the bottom flange in compression.

Raises:

AssertionError – If a warping analysis has not been performed

Return type:

tuple[float, float, float, float]

get_pc() tuple[float, float][source]#

Returns the cross-section centroidal axis plastic centroid.

Returns:

Centroidal axis plastic centroid (x_pc, y_pc)

Raises:

AssertionError – If a plastic analysis has not been performed

Return type:

tuple[float, float]

get_pc_p() tuple[float, float][source]#

Returns the cross-section principal axis plastic centroid.

Returns:

Principal bending axis plastic centroid (x11_pc, y22_pc)

Raises:

AssertionError – If a plastic analysis has not been performed

Return type:

tuple[float, float]

get_s() tuple[float, float][source]#

Returns the cross-section centroidal plastic section moduli.

This is a geometric only property, as such this can only be returned if material properties have not been applied to the cross-section.

Returns:

Plastic section moduli about the centroidal axis (sxx, syy)

Raises:
Return type:

tuple[float, float]

get_mp() tuple[float, float][source]#

Returns the cross-section plastic moment about the centroidal axis.

This is a composite only property, as such this can only be returned if material properties have been applied to the cross-section.

Returns:

Plastic moment (\(M_p = f_y S\)) about the centroidal axis (mp_xx, mp_yy)

Raises:
Return type:

tuple[float, float]

get_sp() tuple[float, float][source]#

Returns the cross-section principal axis plastic section moduli.

This is a geometric only property, as such this can only be returned if material properties have not been applied to the cross-section.

Returns:

Plastic section moduli about the principal bending axis (s11, s22)

Raises:
Return type:

tuple[float, float]

get_mp_p() tuple[float, float][source]#

Returns the cross-section plastic moment about the principal axis.

This is a composite only property, as such this can only be returned if material properties have been applied to the cross-section.

Returns:

Plastic moment (\(M_p = f_y S\)) about the principal axis (mp_11, mp_22)

Raises:
Return type:

tuple[float, float]

get_sf() tuple[float, float, float, float][source]#

Returns the cross-section centroidal axis shape factors.

This is a geometric only property, as such this can only be returned if material properties have not been applied to the cross-section.

Returns:

Centroidal axis shape factors with respect to the top and bottom fibres (sf_xx_plus, sf_xx_minus, sf_yy_plus, sf_yy_minus)

Raises:
Return type:

tuple[float, float, float, float]

get_sf_p() tuple[float, float, float, float][source]#

Returns the cross-section principal axis shape factors.

This is a geometric only property, as such this can only be returned if material properties have not been applied to the cross-section.

Returns:

Principal bending axis shape factors with respect to the top and bottom fibres (sf_11_plus, sf_11_minus, sf_22_plus, sf_22_minus)

Raises:
Return type:

tuple[float, float, float, float]

get_stress_at_points(pts: list[tuple[float, float]], n: float = 0.0, mxx: float = 0.0, myy: float = 0.0, m11: float = 0.0, m22: float = 0.0, mzz: float = 0.0, vx: float = 0.0, vy: float = 0.0, agg_func: ~typing.Callable[[list[float]], float] = <function average>) list[tuple[float, float, float] | None][source]#

Calculates the stress for a list of points.

Calculates the stress at a set of points within an element for given design actions and returns the global stress components for each point.

Parameters:
  • pts (list[tuple[float, float]]) – A list of points [(x, y), ..., ]

  • n (float) – Axial force

  • mxx (float) – Bending moment about the centroidal xx-axis

  • myy (float) – Bending moment about the centroidal yy-axis

  • m11 (float) – Bending moment about the centroidal 11-axis

  • m22 (float) – Bending moment about the centroidal 22-axis

  • mzz (float) – Torsion moment about the centroidal zz-axis

  • vx (float) – Shear force acting in the x-direction

  • vy (float) – Shear force acting in the y-direction

  • agg_func (Callable[[list[float]], float]) – A function that aggregates the stresses if the point is shared by several elements. If the point, pt, is shared by several elements (e.g. if it is a node or on an edge), the stresses are retrieved from each element and combined according to this function.

Raises:

RuntimeError – If a warping analysis has not been carried out and a shear force or a torsion moment is supplied

Returns:

Resultant normal and shear stresses (sigma_zz, tau_xz, tau_yz) for each point pt. If a point is not in the section then None is returned for that element in the list.

Return type:

list[tuple[float, float, float] | None]