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)[source]

Class for a reinforced concrete section.

Inits the ConcreteSection class.

Parameters

geometry (CompoundGeometry) – sectionproperties CompoundGeometry 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='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

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=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

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=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

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=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

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.

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=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

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=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

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=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

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, 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

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, 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

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)[source]

Calculates ultimate stresses within the reinforced concrete section.

Parameters

ultimate_results (UltimateBendingResults) – Ultimate bending results objects

Returns

StressResult – Stress results object