4. Prestressed Analysis#
This section of the documentation outlines how to perform analyses of prestressed concrete sections in concreteproperties.
An prestressed analysis in concreteproperties begins by creating a
PrestressedSection
object from a
CompoundGeometry
object with assigned
material properties.
- class PrestressedSection(geometry, moment_centroid=None, geometric_centroid_override=True)[source]
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 thex
axis.Warning
The only meshed geometries that are permitted are concrete geometries.
Inits the ConcreteSection class.
- Parameters
geometry (
CompoundGeometry
) – sectionproperties CompoundGeometry object describing the prestressed concrete sectionmoment_centroid (
Optional
[Tuple
[float
,float
]], default: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
, default:True
) – If set to True, setsmoment_centroid
to the geometric centroid i.e. material properties applied
Note
The internal axial force and bending moment generated by the prestressing strands is automatically included in all analyses.
4.1. Visualising the Cross-Section#
The PrestressedSection
object can be
visualised by calling the
plot_section()
method.
- PrestressedSection.plot_section(title='Reinforced Concrete Section', background=False, **kwargs)
Plots the reinforced concrete section.
- Parameters
title (
str
, default:'Reinforced Concrete Section'
) – Plot titlebackground (
bool
, default:False
) – If set to True, uses the plot as a background plotkwargs – Passed to
plotting_context()
- Returns
Axes
– Matplotlib axes object
4.2. Gross Area Properties#
Upon creating a PrestressedSection
object, concreteproperties will automatically calculate the area properties based on
the gross prestressed concrete cross-section.
4.3. Cracked Area Properties#
The area properties of the cracked cross-section can be determined by calling the
calculate_cracked_properties()
method.
Unlike regular reinforced concrete sections, the cracked section properties of
prestressed sections are sensitive to external loads, e.g. moment due to self-weight.
These can be provided to the analysis by providing the arguments m_ext
and
n_ext
.
Note
The combination of m_ext
and n_ext
, combined with the prestressing actions,
must result in tension within the concrete. If the provided loads results in
compression across the entire cross-section, a cracked analysis cannot be carried
out and a ValueError
will be raised. An easy way to test this is to set the
flexural tensile strength of the concrete to zero and review the positive and
negative cracking moments.
- PrestressedSection.calculate_cracked_properties(m_ext, n_ext=0)[source]
Calculates cracked section properties given an axial loading and bending moment.
- Parameters
m_ext (
float
) – External bending momentn_ext (
float
, default:0
) – External axial force
- Raises
ValueError – If the provided loads do not result in tension within the concrete
- Returns
CrackedResults
– Cracked results object
The cracking moment is determined 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.
4.4. Moment Curvature Analysis#
A moment curvature analysis can be performed on the prestressed concrete cross-section
by calling the
moment_curvature_analysis()
method.
- PrestressedSection.moment_curvature_analysis(positive=True, n=0, kappa_inc=1e-07, kappa_mult=2, kappa_inc_max=5e-06, delta_m_min=0.15, delta_m_max=0.3, progress_bar=True)[source]
Performs a moment curvature analysis given an applied axial force
n
.Analysis continues until a material reaches its ultimate strain.
- Parameters
positive (
bool
, default:True
) – If set to True, performs the moment curvature analysis for positive bending, otherwise performs the moment curvature analysis for negative bendingn (
float
, default:0
) – Axial forcekappa_inc (
float
, default:1e-07
) – Initial curvature incrementkappa_mult (
float
, default:2
) – Multiplier to apply to the curvature incrementkappa_inc
whendelta_m_max
is satisfied. Whendelta_m_min
is satisfied, the inverse of this multipler is applied tokappa_inc
.kappa_inc_max (
float
, default:5e-06
) – Maximum curvature incrementdelta_m_min (
float
, default:0.15
) – Relative change in moment at which to reduce the curvature incrementdelta_m_max (
float
, default:0.3
) – Relative change in moment at which to increase the curvature incrementprogress_bar (
bool
, default:True
) – If set to True, displays the progress bar
- Returns
MomentCurvatureResults
– Moment curvature results object
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
, kappa_mult
, kappa_inc_max
,
delta_m_min
and delta_m_max
.
4.5. Ultimate Bending Capacity#
The ultimate bending capacity of the prestressed concrete cross-section can be
calculated by calling the
ultimate_bending_capacity()
method.
- PrestressedSection.ultimate_bending_capacity(positive=True, n=0)[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
, default:True
) – If set to True, calculates the positive bending capacity, otherwise calculates the negative bending capacity.n (
float
, default:0
) – Net axial force
- Returns
UltimateBendingResults
– Ultimate bending results object
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 within the cross-section 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 that satisfies the
equilibrium of axial forces.
4.6. Moment Interaction Diagram#
Attention
Moment interaction diagrams for prestressed concrete sections are not yet implemented.
4.7. Biaxial Bending Diagram#
Attention
Biaxial bending diagrams for prestressed concrete sections are not yet implemented.
4.8. Stress Analysis#
concreteproperties allows you to perform four different kinds of stress analysis. Each is detailed separately below.
4.8.1. Uncracked Stress#
A stress analysis can be performed on the gross prestressed concrete cross-section by
calling the
calculate_uncracked_stress()
method.
- PrestressedSection.calculate_uncracked_stress(n=0, m=0)[source]
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 momentm
.- Parameters
n (
float
, default:0
) – Axial forcem (
float
, default:0
) – Bending moment
- Returns
StressResult
– Stress results object
4.8.2. Cracked Stress#
A stress analysis can be performed on the cracked prestressed 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()
.
Note
Unlike ConcreteSection.calculate_cracked_stress()
, the external forces for the
cracked stress analysis are supplied to the
PrestressedSection.calculate_cracked_properties()
method prior to calling
PrestressedSection.calculate_cracked_stress()
.
- PrestressedSection.calculate_cracked_stress(cracked_results)[source]
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
StressResult
– Stress results object
4.8.3. Service Stress#
A service stress analysis can be performed on the prestressed 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()
.
- PrestressedSection.calculate_service_stress(moment_curvature_results, m, kappa=None)[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 objectsm (
float
) – Bending momentkappa (
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
4.8.4. Ultimate Stress#
An ultimate stress analysis can be performed on the prestressed 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()
.
- PrestressedSection.calculate_ultimate_stress(ultimate_results)[source]
Calculates ultimate stresses within the prestressed concrete section.
- Parameters
ultimate_results (
UltimateBendingResults
) – Ultimate bending results objects- Returns
StressResult
– Stress results object