Analysis#
This section of the documentation outlines how to perform analyses in concreteproperties. The Results section outlines how to retrieve and display the results obtained from these analyses.
An analysis in concreteproperties begins by creating a
ConcreteSection
object from a
CompoundGeometry
object with assigned
material properties.
- class ConcreteSection(geometry: CompoundGeometry)[source]
Class for a reinforced concrete section.
Inits the ConcreteSection class.
- Parameters
geometry (
sectionproperties.pre.geometry.CompoundGeometry
) – sectionproperties compound geometry object describing the reinforced concrete section
Visualising the Cross-Section#
The ConcreteSection
object can be
visualised by calling the
plot_section()
method.
- ConcreteSection.plot_section(title: Optional[str] = 'Reinforced Concrete Section', background: Optional[bool] = False, **kwargs) matplotlib.axes.Axes [source]
Plots the reinforced concrete section.
- Parameters
title (Optional[str]) – Plot title
background (Optional[bool]) – If set to True, uses the plot as a background plot
kwargs – Passed to
plotting_context()
- Returns
Matplotlib axes object
- Return type
Gross Area Properties#
Upon creating a ConcreteSection
object,
concreteproperties will automatically calculate the area properties based on the gross
reinforced concrete cross-section.
See also
For an application of the above, see the example Calculating Area Properties.
Cracked Area Properties#
The area properties of the cracked cross-section can be determined by calling the
calculate_cracked_properties()
method. By default the cracked properties are calculated for bending about the x
axis, but this can be modified by providing a bending axis angle theta
.
- ConcreteSection.calculate_cracked_properties(theta: Optional[float] = 0) CrackedResults [source]
Calculates cracked section properties given a neutral axis angle theta.
- Parameters
theta (Optional[float]) – Angle (in radians) the neutral axis makes with the horizontal axis (\(-\pi \leq \theta \leq \pi\))
- Returns
Cracked results object
- Return type
The cracking moment is determines assuming cracking occurs once the stress in the
concrete reaches the flexural_tensile_strength
. Cracked properties are calculated
assuming the concrete is linear elastic and can only resist compression.
See also
For an application of the above, see the example Calculating Cracked Properties.
Moment Curvature Analysis#
A moment curvature analysis can be performed on the reinforced concrete cross-section
by calling the
moment_curvature_analysis()
method. By default the moment curvature analysis is calculated for bending about the
x
axis, but this can be modified by providing a bending axis angle theta
.
- ConcreteSection.moment_curvature_analysis(theta: Optional[float] = 0, kappa_inc: Optional[float] = 1e-07, delta_m_min: Optional[float] = 0.15, delta_m_max: Optional[float] = 0.3) MomentCurvatureResults [source]
Performs a moment curvature analysis given a bending angle theta.
Analysis continues until the steel reaches fracture strain or the concrete reaches its ultimate strain.
- Parameters
theta (Optional[float]) – Angle (in radians) the neutral axis makes with the horizontal axis (\(-\pi \leq \theta \leq \pi\))
kappa_inc (Optional[float]) – Initial curvature increment
delta_m_min (Optional[float]) – Relative change in moment at which to double step
delta_m_max (Optional[float]) – Relative change in moment at which to halve step
- Returns
Moment curvature results object
- Return type
This analysis uses the stress_strain_profile
given to the
Concrete
and
Steel
material properties to calculate a moment
curvature response. The analysis is displacement controlled with an adaptive curvature
increment controlled by the parameters kappa_inc
, delta_m_min
and
delta_m_max
.
See also
For an application of the above, see the example Moment Curvature Analysis.
Ultimate Bending Capacity#
The ultimate bending capacity of the reinforced concrete cross-section can be calculated
by calling the
ultimate_bending_capacity()
method. By default the ultimate bending capacity is calculated for bending about the
x
axis with zero axial force, but this can be modified by providing a bending axis
angle theta
and axial force n
.
- ConcreteSection.ultimate_bending_capacity(theta: Optional[float] = 0, n: Optional[float] = 0) results.UltimateBendingResults [source]
Given a neutral axis angle theta and an axial force n, calculates the ultimate bending capacity.
- Parameters
theta (Optional[float]) – Angle (in radians) the neutral axis makes with the horizontal axis (\(-\pi \leq \theta \leq \pi\))
n (Optional[float]) – Net axial force
- Returns
Ultimate bending results object
- Return type
This analysis uses the ultimate_stress_strain_profile
given to the
Concrete
materials and the
stress_strain_profile
given to the Steel
materials. The ultimate strain profile is determined by setting the strain at the
extreme compressive fibre to the ultimate_strain
parameter (see
Concrete Ultimate Stress-Strain Profiles) and finding the neutral axis which satisfies the
equilibrium of axial forces.
Note
The bending neutral axis must lie within the cross-section, if a combination of
theta
and n
is provided to the method that results in the neutral axis angle
lying outside the cross-section, the algorithm will not converge and a warning message
displayed.
See also
For an application of the above, see the example Ultimate Bending Capacity.
Moment Interaction Diagram#
A moment interaction diagram can be generated for the reinforced concrete cross-section
by calling the
moment_interaction_diagram()
method. By default the moment interaction diagram is generated for bending about the
x
axis, but this can be modified by providing a bending axis angle theta
.
- ConcreteSection.moment_interaction_diagram(theta: Optional[float] = 0, m_neg: Optional[bool] = False, n_points: Optional[int] = 24) MomentInteractionResults [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 (Optional[float]) – Angle (in radians) the neutral axis makes with the horizontal axis (\(-\pi \leq \theta \leq \pi\))
m_neg (Optional[bool]) – If set to true, also calculates the moment interaction for \(\theta = \theta + \pi\), i.e. sagging and hogging
n_points (Optional[int]) – Number of calculation points between the decompression point and the pure bending point
- Returns
Moment interaction results object
- Return type
The moment interaction diagram is generated by shifting the neutral axis throughout the
cross-section from pure bending to the decompression point using n_points
. A
straight line is generated between the decompression point and the squash load, and the
pure bending point and the tensile load.
See also
For an application of the above, see the example Moment Interaction Diagram.
Biaxial Bending Diagram#
A biaxial bending diagram can be generated for the reinforced concrete cross-section,
by calling the
biaxial_bending_diagram()
method. By default the biaxial bending diagram is generated for pure bending, but this
can be modified by providing an axial force n
.
- ConcreteSection.biaxial_bending_diagram(n: Optional[float] = 0, n_points: Optional[int] = 48) BiaxialBendingResults [source]
Generates a biaxial bending diagram given a net axial force n and n_points calculation points.
- Parameters
n (Optional[float]) – Net axial force
n_points (Optional[int]) – Number of calculation points between the decompression
- Returns
Biaxial bending results
- Return type
The biaxial bending diagram is generated by rotating the bending axis angle through its
permissable range \(-\pi \leq \theta \leq \pi\) and calculating the resultant
ultimate bending moments about the x
and y
axes.
See also
For an application of the above, see the example Biaxial Bending Diagram.
Stress Analysis#
concreteproperties allows you to perform four different kinds of stress analysis. Each is detailed separately below.
See also
For an application of stress analysis, see the example Stress Analysis.
Uncracked Stress#
A stress analysis can be performed on the gross reinforced concrete cross-section by
calling the
calculate_uncracked_stress()
method.
- ConcreteSection.calculate_uncracked_stress(n: Optional[float] = 0, m_x: Optional[float] = 0, m_y: Optional[float] = 0) StressResult [source]
Calculates stresses within the reinforced concrete section assuming an uncracked section.
Uses gross area section properties to determine concrete and steel stresses given an axial force n, and bending moments m_x and m_y.
- Parameters
n (Optional[float]) – Axial force
m_x (Optional[float]) – Bending moment about the x-axis
m_y (Optional[float]) – Bending moment about the y-axis
- Returns
Stress results object
- Return type
Cracked Stress#
A stress analysis can be performed on the cracked reinforced concrete cross-section by
calling the
calculate_cracked_stress()
method. Prior to calling this method, the cracked properties must be calculated using
the calculate_cracked_properties()
method and these results passed to
calculate_cracked_stress()
.
- ConcreteSection.calculate_cracked_stress(cracked_results: CrackedResults, n: Optional[float] = 0, m: Optional[float] = 0) StressResult [source]
Calculates stresses within the reinforced concrete section assuming a cracked section.
Uses cracked area section properties to determine concrete and steel stresses given an axial force n and bending moment m about the bending axis stored in cracked_results.
- Parameters
cracked_results (
CrackedResults
) – Cracked results objectsn (Optional[float]) – Axial force
m (Optional[float]) – Bending moment
- Returns
Stress results object
- Return type
Service Stress#
A service stress analysis can be performed on the reinforced concrete cross-section by
calling the
calculate_service_stress()
method. Prior to calling this method, a moment curvature analysis must be performed by
calling the
moment_curvature_analysis()
method and these results passed to
calculate_service_stress()
.
- ConcreteSection.calculate_service_stress(moment_curvature_results: MomentCurvatureResults, m: float, kappa: Optional[float] = 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, can provided a curvature which overrides the supplied moment.
- Parameters
moment_curvature_results (
MomentCurvatureResults
) – Moment-curvature results objectsm (float) – Bending moment
kappa (Optional[float]) – Curvature, if provided overrides the supplied bending moment and plots the stress at the given curvature
- Returns
Stress results object
- Return type
Ultimate Stress#
An ultimate stress analysis can be performed on the reinforced concrete cross-section by
calling the
calculate_ultimate_stress()
method. Prior to calling this method, the ultimate bending capacity must be calculated
by calling the
ultimate_bending_capacity()
method and these results passed to
calculate_ultimate_stress()
.
- ConcreteSection.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