PrestressedSection#

class concreteproperties.prestressed_section.PrestressedSection(geometry: CompoundGeometry, moment_centroid: tuple[float, float] | None = None, geometric_centroid_override: bool = True)[source]#

Bases: ConcreteSection

Class for a prestressed concrete section.

Note

Prestressed concrete sections analysed in concreteproperties must be symmetric about their vertical (y) axis, with all flexure assumed to be about the x axis.

Warning

The only meshed geometries that are permitted are concrete geometries.

Methods

biaxial_bending_diagram

Generates a biaxial bending diagram.

calculate_cracked_properties

Calculate cracked section properties.

calculate_cracked_stress

Calculates cracked streses.

calculate_cracking_moment

Calculates the cracking moment.

calculate_gross_area_properties

Calculates and stores gross section area properties.

calculate_service_stress

Calculates service stresses within the prestressed concrete section.

calculate_ultimate_section_actions

Caclculate ultimate section actions.

calculate_ultimate_stress

Calculates ultimate stresses within the prestressed concrete section.

calculate_uncracked_stress

Calculates uncracked streses.

cracked_neutral_axis_convergence

Calculates cracked netural axis convergence.

cracked_section_properties

Calculates cracked section properties.

decode_d_n

Decodes a neutral axis depth given a control point cp.

extreme_bar

Calculates depth to the extreme bar.

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 an applied axial force n.

moment_interaction_diagram

Generates a moment interaction diagram.

plot_section

Plots the reinforced concrete section.

service_normal_force_convergence

Calculates service convergence.

ultimate_bending_capacity

Given axial force n, calculates the ultimate bending capacity.

ultimate_normal_force_convergence

Calculates ultimate convergence.

__init__(geometry: CompoundGeometry, moment_centroid: tuple[float, float] | None = None, geometric_centroid_override: bool = True) None[source]#

Inits the ConcreteSection class.

Parameters:
  • geometry (CompoundGeometry) – sectionproperties CompoundGeometry object describing the prestressed concrete section

  • moment_centroid (tuple[float, float] | None) – If specified, all moments for service and ultimate analyses are calculated about this point. If not specified, all moments are calculated about the gross cross-section centroid, i.e. no material properties applied.

  • geometric_centroid_override (bool) – If set to True, sets moment_centroid to the geometric centroid i.e. material properties applied

Raises:
  • ValueError – If the section is not symmetric about the y-axis

  • ValueError – If meshed reinforcement geometries are provided

calculate_cracked_properties(m_ext: float, n_ext: float = 0) CrackedResults[source]#

Calculate cracked section properties.

Calculates cracked section properties given an axial loading and bending moment.

Parameters:
  • m_ext (float) – External bending moment

  • n_ext (float) – External axial force

Raises:

AnalysisError – If the provided loads do not result in tension within the concrete

Returns:

Cracked results object

Return type:

CrackedResults

calculate_cracking_moment(n: float, m_int: float, positive: bool) float[source]#

Calculates the cracking moment.

Calculates the cracking moment given an axial load n and internal bending moment m_int.

Parameters:
  • n (float) – Axial load

  • m_int (float) – Internal bending moment

  • positive (bool) – If set to True, determines the cracking moment for positive bending, otherwise determines the cracking moment for negative bending

Returns:

Cracking moment

Return type:

float

cracked_neutral_axis_convergence(d_nc: float, cracked_results: CrackedResults) float[source]#

Calculates cracked netural axis convergence.

Given a trial cracked neutral axis depth d_nc, determines the minimum concrete stress. For a cracked elastic analysis this should be zero (no tension allowed).

Parameters:
  • d_nc (float) – Trial cracked neutral axis

  • cracked_results (CrackedResults) – Cracked results object

Returns:

Cracked neutral axis convergence

Return type:

float

moment_curvature_analysis(positive: bool = True, n: float = 0, kappa_inc: float = 1e-07, kappa_mult: float = 2, kappa_inc_max: float = 5e-06, delta_m_min: float = 0.15, delta_m_max: float = 0.3, progress_bar: bool = True) MomentCurvatureResults[source]#

Performs a moment curvature analysis given an applied axial force n.

Analysis continues until a material reaches its ultimate strain.

Parameters:
  • positive (bool) – If set to True, performs the moment curvature analysis for positive bending, otherwise performs the moment curvature analysis for negative bending

  • n (float) – Axial force

  • kappa_inc (float) – Initial curvature increment

  • kappa_mult (float) – Multiplier to apply to the curvature increment kappa_inc when delta_m_max is satisfied. When delta_m_min is satisfied, the inverse of this multipler is applied to kappa_inc.

  • kappa_inc_max (float) – Maximum curvature increment

  • delta_m_min (float) – Relative change in moment at which to reduce the curvature increment

  • delta_m_max (float) – Relative change in moment at which to increase the curvature increment

  • progress_bar (bool) – If set to True, displays the progress bar

Returns:

Moment curvature results object

Return type:

MomentCurvatureResults

ultimate_bending_capacity(positive: bool = True, n: float = 0) UltimateBendingResults[source]#

Given axial force n, calculates the ultimate bending capacity.

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

Parameters:
  • positive (bool) – If set to True, calculates the positive bending capacity, otherwise calculates the negative bending capacity.

  • n (float) – Net axial force

Returns:

Ultimate bending results object

Return type:

UltimateBendingResults

moment_interaction_diagram()[source]#

Generates a moment interaction diagram.

Raises:

NotImplementedError – This feature has not yet been implemented.

biaxial_bending_diagram()[source]#

Generates a biaxial bending diagram.

Raises:

NotImplementedError – This feature has not yet been implemented.

calculate_uncracked_stress(n: float = 0, m: float = 0) StressResult[source]#

Calculates uncracked streses.

Calculates stresses within the prestressed concrete section assuming an uncracked section. Uses gross area section properties to determine concrete, reinforcement and strand stresses given an axial force n and bending moment m.

Parameters:
  • n (float) – Axial force

  • m (float) – Bending moment

Returns:

Stress results object

Return type:

StressResult

calculate_cracked_stress(cracked_results: CrackedResults) StressResult[source]#

Calculates cracked streses.

Calculates stresses within the prestressed concrete section assuming a cracked section. Uses cracked area section properties to determine concrete, reinforcement and strand stresses given the actions provided during the cracked analysis.

Parameters:

cracked_results (CrackedResults) – Cracked results objects

Returns:

Stress results object

Return type:

StressResult

calculate_service_stress(moment_curvature_results: MomentCurvatureResults, m: float, kappa: float | None = None) StressResult[source]#

Calculates service stresses within the prestressed 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 (float | None) – Curvature, if provided overrides the supplied bending moment and calculates the stress at the given curvature

Raises:

AnalysisError – If the analysis fails

Returns:

Stress results object

Return type:

StressResult

calculate_ultimate_stress(ultimate_results: UltimateBendingResults) StressResult[source]#

Calculates ultimate stresses within the prestressed concrete section.

Parameters:

ultimate_results (UltimateBendingResults) – Ultimate bending results objects

Returns:

Stress results object

Return type:

StressResult

calculate_gross_area_properties() None#

Calculates and stores gross section area properties.

calculate_ultimate_section_actions(d_n: float, ultimate_results: UltimateBendingResults | None = None) UltimateBendingResults#

Caclculate 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.

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

  • ultimate_results (UltimateBendingResults | None) – Ultimate bending results object

Raises:

ValueError – If d_n is not positive

Returns:

Ultimate bending results object

Return type:

UltimateBendingResults

cracked_section_properties(cracked_results: CrackedResults) None#

Calculates cracked section properties.

Given a list of cracked geometries (stored in cracked_results), determines the cracked section properties and stores in cracked_results.

Parameters:

cracked_results (CrackedResults) – Cracked results object with stored cracked geometries

decode_d_n(theta: float, cp: tuple[str, float], d_t: float) float#

Decodes a neutral axis depth given a control point cp.

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

  • cp (tuple[str, float]) – Control point to decode

  • d_t (float) – Depth to extreme tensile fibre

Raises:
Returns:

Decoded neutral axis depth

Return type:

float

extreme_bar(theta: float) tuple[float, float]#

Calculates depth to the 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.

Parameters:

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

Returns:

Depth of furthest bar and its yield strain

Return type:

tuple[float, float]

get_gross_properties() GrossProperties#

Returns the gross section properties of the reinforced concrete section.

Returns:

Gross concrete properties object

Return type:

GrossProperties

get_transformed_gross_properties(elastic_modulus: float) TransformedGrossProperties#

Transforms gross section properties given a reference elastic modulus.

Parameters:

elastic_modulus (float) – Reference elastic modulus

Returns:

Transformed concrete properties object

Return type:

TransformedGrossProperties

plot_section(title: str = 'Reinforced Concrete Section', background: bool = False, **kwargs) matplotlib.axes.Axes#

Plots the reinforced concrete section.

Parameters:
  • title (str) – Plot title

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

  • kwargs – Passed to plotting_context()

Returns:

Matplotlib axes object

Return type:

matplotlib.axes.Axes

service_normal_force_convergence(eps0: float, kappa: float, moment_curvature: MomentCurvatureResults) float#

Calculates service convergence.

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

Parameters:
Returns:

Net axial force

Return type:

float

ultimate_normal_force_convergence(d_n: float, n: float, ultimate_results: UltimateBendingResults) float#

Calculates ultimate 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.

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:

Axial force convergence

Return type:

float