ConcreteSection¶
- class concreteproperties.concrete_section.ConcreteSection(geometry: CompoundGeometry, moment_centroid: tuple[float, float] | None = None, geometric_centroid_override: bool = False)[source]¶
Bases:
objectClass for a reinforced concrete section.
Methods
Generates a biaxial bending diagram.
Calculates cracked section properties given a neutral axis angle
theta.Calculates cracked stresses.
Calculates the cracking moment given a bending angle
theta.Calculates and stores gross section area properties.
Calculates service stresses within the reinforced concrete section.
Caclculate ultimate section actions.
Calculates ultimate stresses within the reinforced concrete section.
Calculates uncracked stresses.
Determine the cracked neutral axis convergence.
Calculates cracked section properties.
Decodes a neutral axis depth given a control point
cp.Calculates depth to the extreme bar.
Returns the gross section properties of the reinforced concrete section.
Transforms gross section properties given a reference elastic modulus.
Moment curvature analysis.
Generates a moment interaction diagram given a neutral axis angle
theta.Plots the reinforced concrete section.
Calculates service convergence.
Calculates ultiamte bending capacity.
Calculates ultimate convergence.
- __init__(geometry: CompoundGeometry, moment_centroid: tuple[float, float] | None = None, geometric_centroid_override: bool = False) None[source]¶
Inits the ConcreteSection class.
- Parameters:
geometry (CompoundGeometry) –
sectionpropertiesCompoundGeometryobject describing the reinforced concrete sectionmoment_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. Defaults to
None.geometric_centroid_override (bool) – If set to True, sets
moment_centroidto the geometric centroid i.e. material properties applied (useful for composite section analysis). Defaults toFalse.
- Raises:
ValueError – If steel strand materials are detected, use a
PrestressedSectioninstead
- calculate_gross_area_properties() None[source]¶
Calculates and stores gross section area properties.
- get_gross_properties() GrossProperties[source]¶
Returns the gross section properties of the reinforced concrete section.
- Returns:
Gross concrete properties object
- Return type:
- get_transformed_gross_properties(elastic_modulus: float) TransformedGrossProperties[source]¶
Transforms gross section properties given a reference elastic modulus.
- Parameters:
elastic_modulus (float) – Reference elastic modulus
- Returns:
Transformed concrete properties object
- Return type:
- calculate_cracked_properties(theta: float = 0) CrackedResults[source]¶
Calculates cracked section properties given a neutral axis angle
theta.- Parameters:
theta (float) – Angle (in radians) the neutral axis makes with the horizontal axis (\(-\pi \leq \theta \leq \pi\)). Defaults to
0.- Raises:
AnalysisError – If the analysis fails
- Returns:
Cracked results object
- Return type:
- calculate_cracking_moment(theta: float) float[source]¶
Calculates the cracking moment given a bending angle
theta.
- cracked_neutral_axis_convergence(d_nc: float, cracked_results: CrackedResults) float[source]¶
Determine the 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.- Parameters:
d_nc (float) – Trial cracked neutral axis
cracked_results (CrackedResults) – Cracked results object
- Raises:
ValueError – If d_nc is not positive or doesn’t lie within the section
- Returns:
Cracked neutral axis convergence
- Return type:
- cracked_section_properties(cracked_results: CrackedResults) None[source]¶
Calculates cracked section properties.
Given a list of cracked geometries (stored in
cracked_results), determines the cracked section properties and stores incracked_results.- Parameters:
cracked_results (CrackedResults) – Cracked results object with stored cracked geometries
- moment_curvature_analysis(theta: float = 0, n: float = 0, kappa0: 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]¶
Moment curvature analysis.
Performs a moment curvature analysis given a bending angle
thetaand applied axial forcen. Analysis continues until a material reaches its ultimate strain.- Parameters:
theta (float) – Angle (in radians) the neutral axis makes with the horizontal axis (\(-\pi \leq \theta \leq \pi\)). Defaults to
0.n (float) – Axial force. Defaults to
0.kappa0 (float) – Initial curvature. Defaults to
0.kappa_inc (float) – Initial curvature increment. Defaults to
1e-7.kappa_mult (float) – Multiplier to apply to the curvature increment
kappa_incwhendelta_m_maxis satisfied. Whendelta_m_minis satisfied, the inverse of this multipler is applied tokappa_inc. Defaults to2.kappa_inc_max (float) – Maximum curvature increment. Defaults to
5e-6.delta_m_min (float) – Relative change in moment at which to reduce the curvature increment. Defaults to
0.15.delta_m_max (float) – Relative change in moment at which to increase the curvature increment. Defaults to
0.3.progress_bar (bool) – If set to True, displays the progress bar. Defaults to
True.
- Returns:
Moment curvature results object
- Return type:
- service_normal_force_convergence(eps0: float, kappa: float, moment_curvature: MomentCurvatureResults) float[source]¶
Calculates service convergence.
Given a neutral axis depth
d_nand curvaturekappa, returns the the net axial force.- Parameters:
eps0 (float) – Strain at top fibre
kappa (float) – Curvature
moment_curvature (MomentCurvatureResults) – Moment curvature results object
- Returns:
Net axial force
- Return type:
- ultimate_bending_capacity(theta: float = 0, n: float = 0) UltimateBendingResults[source]¶
Calculates ultiamte bending capacity.
Given a neutral axis angle
thetaand an axial forcen, calculates the ultimate bending capacity.Note
This calculation is code agnostic and no capacity reduction factors are applied. If design capacities are required, use the applicable
design_codemodule or consult your local design code on how to treat nominal axial loads in ultimate bending calculations.Note
k_uis calculated only for lumped (non-meshed) geometries.- Parameters:
- Raises:
AnalysisError – If the analysis fails
- Returns:
Ultimate bending results object
- Return type:
- ultimate_normal_force_convergence(d_n: float, n: float, ultimate_results: UltimateBendingResults) float[source]¶
Calculates ultimate convergence.
Given a neutral axis depth
d_nand neutral axis angletheta, calculates the difference between the target net axial forcenand 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:
- calculate_ultimate_section_actions(d_n: float, ultimate_results: UltimateBendingResults | None = None) UltimateBendingResults[source]¶
Caclculate ultimate section actions.
Given a neutral axis depth
d_nand neutral axis angletheta, calculates the resultant bending momentsm_x,m_y,m_xyand the net axial forcen.- 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:
- moment_interaction_diagram(theta: float = 0, limits: list[tuple[str, float]] | None = None, control_points: list[tuple[str, float]] | None = None, labels: list[str] | None = None, n_points: int = 24, n_spacing: int | None = None, max_comp: float | None = None, max_comp_labels: list[str] | None = None, progress_bar: bool = True) MomentInteractionResults[source]¶
Generates a moment interaction diagram given a neutral axis angle
theta.limitsandcontrol_pointsaccept a list of tuples that define points on the moment interaction diagram. The first item in the tuple defines the type of control points, while the second item defines the location of the control point. Types of control points are detailed below:Control points
"D"- ratio of neutral axis depth to section depth"d_n"- neutral axis depth"fy"- yield ratio of the most extreme tensile bar"N"- net (nominal) axial force"kappa0"- zero curvature compression (N.B second item in tuple is not used)
- Parameters:
theta (float) – Angle (in radians) the neutral axis makes with the horizontal axis (\(-\pi \leq \theta \leq \pi\))
limits (list[tuple[str, float]] | None) – List of control points that define the start and end of the interaction diagram. List length must equal two. The default limits range from concrete decompression strain to zero curvature tension, i.e.
[("D", 1.0), ("d_n", 1e-6)]. Defaults toNone.control_points (list[tuple[str, float]] | None) – List of additional control points to add to the moment interatction diagram. The default control points include the pure compression point (
kappa0), the balanced point (fy = 1) and the pure bending point (N=0), i.e.[("kappa0", 0.0), ("fy", 1.0), ("N", 0.0)]. Control points may lie outside the limits of the moment interaction diagram as long as equilibrium can be found. Defaults toNone.labels (list[str] | None) – List of labels to apply to the
limitsandcontrol_pointsfor plotting purposes. The first two values inlabelsapply labels to thelimits, the remaining values apply labels to thecontrol_points. If a single value is provided, this value will be applied to bothlimitsand allcontrol_points. The length oflabelsmust equal1or2 + len(control_points). Defaults toNone.n_points (int) – Number of points to compute including and between the
limitsof the moment interaction diagram. Generates equally spaced neutral axis depths between thelimits. Defaults to24.n_spacing (int | None) – If provided, overrides
n_pointsand generates the moment interaction diagram usingn_spacingequally spaced axial loads. Note that usingn_spacingnegatively affects performance, as the neutral axis depth must first be located for each point on the moment interaction diagram. Defaults toNone.max_comp (float | None) – If provided, limits the maximum compressive force in the moment interaction diagram to
max_comp. Defaults toNone.max_comp_labels (list[str] | None) – Labels to apply to the
max_compintersection points, first value is at zero moment, second value is at the intersection with the interaction diagramprogress_bar (bool) – If set to True, displays the progress bar. Defaults to
True.
- Raises:
ValueError – Length of
limitsmust equal2ValueError – Length of
labelsmust be1or2 + len(control_points)ValueError – If
max_compis greater than the maximum axial capacity
- Returns:
Moment interaction results object
- Return type:
- biaxial_bending_diagram(n: float = 0, n_points: int = 48, progress_bar: bool = True) BiaxialBendingResults[source]¶
Generates a biaxial bending diagram.
Generates a biaxial bending diagram given a net axial force
nandn_pointscalculation points.- Parameters:
- Returns:
Biaxial bending results
- Return type:
- calculate_uncracked_stress(n: float = 0, m_x: float = 0, m_y: float = 0) StressResult[source]¶
Calculates uncracked stresses.
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 momentsm_xandm_y.- Parameters:
- Returns:
Stress results object
- Return type:
- calculate_cracked_stress(cracked_results: CrackedResults, n: float = 0, m: float = 0) StressResult[source]¶
Calculates cracked stresses.
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
nand bending momentmabout the bending axis stored incracked_results.- Parameters:
cracked_results (CrackedResults) – Cracked results objects
n (float) – Axial force. Defaults to
0.m (float) – Bending moment. Defaults to
0.
- Returns:
Stress results object
- Return type:
- calculate_service_stress(moment_curvature_results: MomentCurvatureResults, m: float, kappa: float | None = None) StressResult[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 (float | None) – Curvature, if provided overrides the supplied bending moment and calculates the stress at the given curvature. Defaults to
None.
- Raises:
AnalysisError – If the stress analysis fails
- Returns:
Stress results object
- Return type:
- calculate_ultimate_stress(ultimate_results: UltimateBendingResults) StressResult[source]¶
Calculates ultimate stresses within the reinforced concrete section.
- Parameters:
ultimate_results (UltimateBendingResults) – Ultimate bending results objects
- Returns:
Stress results object
- Return type:
- extreme_bar(theta: float) tuple[float, float][source]¶
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.
- decode_d_n(theta: float, cp: tuple[str, float], d_t: float) float[source]¶
Decodes a neutral axis depth given a control point
cp.- Parameters:
- Raises:
ValueError – If D is not greater than zero
ValueError – If d_n is not greater than zero
- Returns:
Decoded neutral axis depth
- Return type:
- plot_section(title: str = 'Reinforced Concrete Section', background: bool = False, **kwargs) matplotlib.axes.Axes[source]¶
Plots the reinforced concrete section.
- Parameters:
title (str) – Plot title. Defaults to
"Reinforced Concrete Section".background (bool) – If set to True, uses the plot as a background plot. Defaults to
False.kwargs – Passed to
plotting_context()
- Returns:
Matplotlib axes object
- Return type: