AnalysisSection#

class concreteproperties.analysis_section.AnalysisSection(geometry: CPGeom)[source]#

Bases: object

Class for an analysis section to perform a fast analysis on meshed sections.

Methods

calculate_meshed_area

Calculates the area of the analysis section based on the generated mesh.

get_elastic_stress

Given section actions and section propreties, calculates elastic stresses.

get_service_stress

Determines the service stresses.

get_ultimate_stress

Determines the ultimate stresses.

plot_mesh

Plots the finite element mesh.

plot_shape

Plots the coloured shape of the mesh with no outlines on ax.

service_analysis

Performs a service analysis on the section.

ultimate_analysis

Performs an ultimate analysis on the section.

__init__(geometry: CPGeom) None[source]#

Inits the AnalysisSection class.

Parameters:

geometry (CPGeom) – Geometry object

calculate_meshed_area() float[source]#

Calculates the area of the analysis section based on the generated mesh.

Returns:

Meshed area (un-weighted by elastic modulus)

Return type:

float

get_elastic_stress(n: float, m_x: float, m_y: float, e_a: float, cx: float, cy: float, e_ixx: float, e_iyy: float, e_ixy: float) tuple[ndarray, float, float, float][source]#

Given section actions and section propreties, calculates elastic stresses.

Parameters:
  • n (float) – Axial force

  • m_x (float) – Bending moment about the x-axis

  • m_y (float) – Bending moment about the y-axis

  • e_a (float) – Axial rigidity

  • cx (float) – x-Centroid

  • cy (float) – y-Centroid

  • e_ixx (float) – Flexural rigidity about the x-axis

  • e_iyy (float) – Flexural rigidity about the y-axis

  • e_ixy (float) – Flexural rigidity about the xy-axis

Returns:

Elastic stresses, net force and distance from neutral axis to point of force action

Return type:

tuple[ndarray, float, float, float]

service_analysis(ecf: tuple[float, float], eps0: float, theta: float, kappa: float, centroid: tuple[float, float]) tuple[float, float, float, float, float][source]#

Performs a service analysis on the section.

Parameters:
  • ecf (tuple[float, float]) – Global coordinate of the extreme compressive fibre

  • eps0 (float) – Strain at top fibre

  • theta (float) – Angle (in radians) the neutral axis makes with the horizontal axis (\(-\pi \leq \theta \leq \pi\))

  • kappa (float) – Curvature

  • centroid (tuple[float, float]) – Centroid about which to take moments

Returns:

Axial force, section moments and min/max strain

Return type:

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

get_service_stress(kappa: float, ecf: tuple[float, float], eps0: float, theta: float, centroid: tuple[float, float]) tuple[ndarray, float, float, float][source]#

Determines the service stresses.

Given the neutral axis depth d_n and curvature kappa determines the service stresses within the section.

Parameters:
  • kappa (float) – Curvature

  • ecf (tuple[float, float]) – Global coordinate of the extreme compressive fibre

  • eps0 (float) – Strain at top fibre

  • theta (float) – Angle (in radians) the neutral axis makes with the horizontal axis (\(-\pi \leq \theta \leq \pi\))

  • centroid (tuple[float, float]) – Centroid about which to take moments

Returns:

Service stresses, net force and distance from centroid to point of force action

Return type:

tuple[ndarray, float, float, float]

ultimate_analysis(point_na: tuple[float, float], d_n: float, theta: float, ultimate_strain: float, centroid: tuple[float, float]) tuple[float, float, float][source]#

Performs an ultimate analysis on the section.

Parameters:
  • point_na (tuple[float, float]) – Point on the neutral axis

  • d_n (float) – Depth of the neutral axis from the extreme compression fibre

  • theta (float) – Angle (in radians) the neutral axis makes with the horizontal axis (\(-\pi \leq \theta \leq \pi\))

  • ultimate_strain (float) – Concrete strain at failure

  • centroid (tuple[float, float]) – Centroid about which to take moments

Returns:

Axial force and resultant moments about the global axes

Return type:

tuple[float, float, float]

get_ultimate_stress(d_n: float, point_na: tuple[float, float], theta: float, ultimate_strain: float, centroid: tuple[float, float]) tuple[ndarray, float, float, float][source]#

Determines the ultimate stresses.

Given the neutral axis depth d_n and ultimate strain, determines the ultimate stresses with the section.

Parameters:
  • d_n (float) – Neutral axis depth

  • point_na (tuple[float, float]) – Point on the neutral axis

  • theta (float) – Angle (in radians) the neutral axis makes with the horizontal axis (\(-\pi \leq \theta \leq \pi\))

  • ultimate_strain (float) – Concrete strain at failure

  • centroid (tuple[float, float]) – Centroid about which to take moments

Returns:

Ultimate stresses net force and distance from neutral axis to point of force action

Return type:

tuple[ndarray, float, float, float]

plot_mesh(alpha: float = 0.5, title: str = 'Finite Element Mesh', **kwargs) matplotlib.axes.Axes[source]#

Plots the finite element mesh.

Parameters:
Returns:

Matplotlib axes object

Return type:

matplotlib.axes.Axes

plot_shape(ax: matplotlib.axes.Axes) None[source]#

Plots the coloured shape of the mesh with no outlines on ax.

Parameters:

ax (matplotlib.axes.Axes) – Matplotlib axes object