concreteproperties.concrete_section.ConcreteSection#

class ConcreteSection(geometry)[source]#

Bases: object

Class for a reinforced concrete section.

Inits the ConcreteSection class.

Parameters

geometry (CompoundGeometry) – sectionproperties CompoundGeometry object describing the reinforced concrete section

Methods

biaxial_bending_diagram

Generates a biaxial bending diagram given a net axial force n and n_points calculation points.

calculate_cracked_properties

Calculates cracked section properties given a neutral axis angle theta.

calculate_cracked_stress

Calculates stresses within the reinforced concrete section assuming a cracked section.

calculate_cracking_moment

Calculates the cracking moment given a bending angle theta.

calculate_gross_area_properties

Calculates and stores gross section area properties.

calculate_service_stress

Calculates service stresses within the reinforced concrete section.

calculate_ultimate_section_actions

Given a neutral axis depth d_n and neutral axis angle theta, calculates the resultant bending moments m_x, m_y, m_xy and the net axial force n.

calculate_ultimate_stress

Calculates ultimate stresses within the reinforced concrete section.

calculate_uncracked_stress

Calculates stresses within the reinforced concrete section assuming an uncracked section.

cracked_neutral_axis_convergence

Given a trial cracked neutral axis depth d_nc, determines the difference between the first moments of area above and below the trial axis.

extreme_bar

Given neutral axis angle theta, determines the depth of the furthest lumped reinforcement from the extreme compressive fibre and also returns its yield strain.

get_gross_properties

Returns the gross section properties of the reinforced concrete section.

get_transformed_gross_properties

Transforms gross section properties given a reference elastic modulus.

moment_curvature_analysis

Performs a moment curvature analysis given a bending angle theta.

moment_interaction_diagram

Generates a moment interaction diagram given a neutral axis angle theta and n_points calculation points between the decompression case and the pure bending case.

plot_section

Plots the reinforced concrete section.

service_normal_force_convergence

Given a neutral axis depth d_n and curvature kappa, returns the the net axial force.

ultimate_bending_capacity

Given a neutral axis angle theta and an axial force n, calculates the ultimate bending capacity.

ultimate_normal_force_convergence

Given a neutral axis depth d_n and neutral axis angle theta, calculates the difference between the target net axial force n and the calculated axial force.

calculate_gross_area_properties()[source]#

Calculates and stores gross section area properties.

get_gross_properties()[source]#

Returns the gross section properties of the reinforced concrete section.

Returns

GrossProperties – Gross concrete properties object

get_transformed_gross_properties(elastic_modulus)[source]#

Transforms gross section properties given a reference elastic modulus.

Parameters

elastic_modulus (float) – Reference elastic modulus

Returns

TransformedGrossProperties – Transformed concrete properties object

calculate_cracked_properties(theta=0)[source]#

Calculates cracked section properties given a neutral axis angle theta.

Parameters

theta (float, default: 0) – Angle (in radians) the neutral axis makes with the horizontal axis (\(-\pi \leq \theta \leq \pi\))

Returns

CrackedResults – Cracked results object

calculate_cracking_moment(theta)[source]#

Calculates the cracking moment given a bending angle theta.

Parameters

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

Returns

float – Cracking moment

cracked_neutral_axis_convergence(d_nc, cracked_results)[source]#

Given a trial cracked neutral axis depth d_nc, determines the difference between the first moments of area above and below the trial axis.

Parameters
  • d_nc (float) – Trial cracked neutral axis

  • cracked_results (CrackedResults) – Cracked results object

Returns

float – Cracked neutral axis convergence

moment_curvature_analysis(theta=0, kappa_inc=1e-07, delta_m_min=0.15, delta_m_max=0.3)[source]#

Performs a moment curvature analysis given a bending angle theta.

Analysis continues until a material reaches its ultimate strain.

Param

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

Parameters
  • kappa_inc (float, default: 1e-07) – Initial curvature increment

  • delta_m_min (float, default: 0.15) – Relative change in moment at which to double step

  • delta_m_max (float, default: 0.3) – Relative change in moment at which to halve step

Returns

MomentCurvatureResults – Moment curvature results object

service_normal_force_convergence(d_n, kappa, moment_curvature)[source]#

Given a neutral axis depth d_n and curvature kappa, returns the the net axial force.

Parameters
  • d_nc – Trial cracked neutral axis

  • kappa (float) – Curvature

  • moment_curvature (MomentCurvatureResults) – Moment curvature results object

Returns

float – Net axial force

ultimate_bending_capacity(theta=0, n=0)[source]#

Given a neutral axis angle theta and an axial force n, calculates the ultimate bending capacity.

Note that k_u is calculated only for lumped (non-meshed) geometries.

Parameters
  • theta (float, default: 0) – Angle (in radians) the neutral axis makes with the horizontal axis (\(-\pi \leq \theta \leq \pi\))

  • n (float, default: 0) – Net axial force

Returns

UltimateBendingResults – Ultimate bending results object

ultimate_normal_force_convergence(d_n, n, ultimate_results)[source]#

Given a neutral axis depth d_n and neutral axis angle theta, calculates the difference between the target net axial force n and the calculated axial force.

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

  • n (float) – Net axial force

  • ultimate_results (UltimateBendingResults) – Ultimate bending results object

Returns

float – Axial force convergence

calculate_ultimate_section_actions(d_n, ultimate_results=None)[source]#

Given a neutral axis depth d_n and neutral axis angle theta, calculates the resultant bending moments m_x, m_y, m_xy and the net axial force n.

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

  • ultimate_results (Optional[UltimateBendingResults], default: None) – Ultimate bending results object

Returns

UltimateBendingResults – Ultimate bending results object

moment_interaction_diagram(theta=0, control_points=[('kappa0', 0.0), ('D', 1.0), ('fy', 1.0), ('N', 0.0), ('d_n', 1e-06)], labels=[None], n_points=[4, 12, 12, 4], max_comp=None, max_comp_labels=[None, None])[source]#

Generates a moment interaction diagram given a neutral axis angle theta and n_points calculation points between the decompression case and the pure bending case.

Parameters
  • theta (float, default: 0) – Angle (in radians) the neutral axis makes with the horizontal axis (\(-\pi \leq \theta \leq \pi\))

  • control_points (List[Tuple[str, float]], default: [('kappa0', 0.0), ('D', 1.0), ('fy', 1.0), ('N', 0.0), ('d_n', 1e-06)]) – List of control points over which to generate the interaction diagram. Each entry in control_points is a Tuple with the first item the type of control point and the second item defining the location of the control point. Acceptable types of control points are "D" (ratio of neutral axis depth to section depth), "d_n" (neutral axis depth), "fy" (yield ratio of the most extreme tensile bar), "N" (axial force) and "kappa" (zero curvature compression - must be at start of list, second value in tuple is not used). Control points must be defined in an order which results in a decreasing neutral axis depth (decreasing axial force). The default control points define an interaction diagram from the decompression point to the pure bending point.

  • labels (List[Optional[str]], default: [None]) – List of labels to apply to the control_points for plotting purposes, length must be the same as the length of control_points. If a single value is provided, will apply this label to all control points.

  • n_points (Union[int, List[int]], default: [4, 12, 12, 4]) – Number of neutral axis depths to compute between each control point. Length must be one less than the length of control_points. If an integer is provided this will be used between all control points.

  • max_comp (Optional[float], default: None) – If provided, limits the maximum compressive force in the moment interaction diagram to max_comp

  • max_comp_labels (List[Optional[str]], default: [None, None]) – Labels to apply to the max_comp intersection points, first value is at zero moment, second value is at the intersection with the interaction diagram

Raises

ValueError – If control_points, labels or n_points is invalid

Returns

MomentInteractionResults – Moment interaction results object

biaxial_bending_diagram(n=0, n_points=48)[source]#

Generates a biaxial bending diagram given a net axial force n and n_points calculation points.

Parameters
  • n (float, default: 0) – Net axial force

  • n_points (int, default: 48) – Number of calculation points between the decompression

Returns

BiaxialBendingResults – Biaxial bending results

calculate_uncracked_stress(n=0, m_x=0, m_y=0)[source]#

Calculates stresses within the reinforced concrete section assuming an uncracked section.

Uses gross area section properties to determine concrete and reinforcement stresses given an axial force n, and bending moments m_x and m_y.

Parameters
  • n (float, default: 0) – Axial force

  • m_x (float, default: 0) – Bending moment about the x-axis

  • m_y (float, default: 0) – Bending moment about the y-axis

Returns

StressResult – Stress results object

calculate_cracked_stress(cracked_results, n=0, m=0)[source]#

Calculates stresses within the reinforced concrete section assuming a cracked section.

Uses cracked area section properties to determine concrete and reinforcement stresses given an axial force n and bending moment m about the bending axis stored in cracked_results.

Parameters
  • cracked_results (CrackedResults) – Cracked results objects

  • n (float, default: 0) – Axial force

  • m (float, default: 0) – Bending moment

Returns

StressResult – Stress results object

calculate_service_stress(moment_curvature_results, m, kappa=None)[source]#

Calculates service stresses within the reinforced concrete section.

Uses linear interpolation of the moment-curvature results to determine the curvature of the section given the user supplied moment, and thus the stresses within the section. Otherwise, a curvature can be provided which overrides the supplied moment.

Parameters
  • moment_curvature_results (MomentCurvatureResults) – Moment-curvature results objects

  • m (float) – Bending moment

  • kappa (Optional[float], default: None) – Curvature, if provided overrides the supplied bending moment and calculates the stress at the given curvature

Returns

StressResult – Stress results object

calculate_ultimate_stress(ultimate_results)[source]#

Calculates ultimate stresses within the reinforced concrete section.

Parameters

ultimate_results (UltimateBendingResults) – Ultimate bending results objects

Returns

StressResult – Stress results object

extreme_bar(theta)[source]#

Given neutral axis angle theta, determines the depth of the furthest lumped reinforcement from the extreme compressive fibre and also returns its yield strain.

Parameters

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

Returns

Tuple[float, float] – Depth of furthest bar and its yield strain

plot_section(title='Reinforced Concrete Section', background=False, **kwargs)[source]#

Plots the reinforced concrete section.

Parameters
  • title (str, default: 'Reinforced Concrete Section') – Plot title

  • background (bool, default: False) – If set to True, uses the plot as a background plot

  • kwargs – Passed to plotting_context()

Returns

Axes – Matplotlib axes object