5. Results#

After performing an analysis on a reinforced concrete cross-section (see Analysis), concreteproperties provides the user with a results object specific to the conducted analysis. These results objects have methods tailored for the post-processing of analysis results.

5.1. Gross Area Properties#

Gross area properties can be retrieved by calling the get_gross_properties() method.

ConcreteSection.get_gross_properties()[source]

Returns the gross section properties of the reinforced concrete section.

Returns

GrossProperties – Gross concrete properties object

This method returns a GrossProperties object, which stores all the calculated section properties as attributes. The gross area properties can be printed to the terminal by calling the print_results() method.

class GrossProperties(total_area=0, concrete_area=0, reinf_meshed_area=0, reinf_lumped_area=0, strand_area=0, e_a=0, mass=0, perimeter=0, e_qx=0, e_qy=0, qx_gross=0, qy_gross=0, cx=0, cy=0, cx_gross=0, cy_gross=0, e_ixx_g=0, e_iyy_g=0, e_ixy_g=0, e_ixx_c=0, e_iyy_c=0, e_ixy_c=0, e_i11=0, e_i22=0, phi=0, e_zxx_plus=0, e_zxx_minus=0, e_zyy_plus=0, e_zyy_minus=0, e_z11_plus=0, e_z11_minus=0, e_z22_plus=0, e_z22_minus=0, conc_ultimate_strain=0, n_prestress=0, m_prestress=0)[source]

Class for storing gross concrete section properties.

All properties with an e_ preceding the property are multiplied by the elastic modulus. In order to obtain transformed properties, call the get_transformed_gross_properties() method.

print_results(fmt='8.6e')[source]

Prints the gross concrete section properties to the terminal.

Parameters

fmt (str, default: '8.6e') – Number format

Transformed gross area properties can be obtained by calling the get_transformed_gross_properties() method.

ConcreteSection.get_transformed_gross_properties(elastic_modulus)[source]

Transforms gross section properties given a reference elastic modulus.

Parameters

elastic_modulus (float) – Reference elastic modulus

Returns

TransformedGrossProperties – Transformed concrete properties object

This method returns a TransformedGrossProperties object, which stores all the calculated transformed section properties as class attributes. The transformed gross area properties can be printed to the terminal by calling the print_results() method.

class TransformedGrossProperties(concrete_properties, elastic_modulus, area=0, qx=0, qy=0, ixx_g=0, iyy_g=0, ixy_g=0, ixx_c=0, iyy_c=0, ixy_c=0, i11=0, i22=0, zxx_plus=0, zxx_minus=0, zyy_plus=0, zyy_minus=0, z11_plus=0, z11_minus=0, z22_plus=0, z22_minus=0)[source]

Class for storing transformed gross concrete section properties.

Parameters
  • concrete_properties (GrossProperties) – Concrete properties object

  • elastic_modulus (float) – Reference elastic modulus

print_results(fmt='8.6e')[source]

Prints the transformed gross concrete section properties to the terminal.

Parameters

fmt (str, default: '8.6e') – Number format

See also

For an application of the above, see the example Calculating Area Properties.

5.2. Cracked Area Properties#

Performing a cracked analysis with calculate_cracked_properties() returns a CrackedResults object.

class CrackedResults(theta, n=0, m=0, m_cr=0, d_nc=0, cracked_geometries=<factory>, e_a_cr=0, e_qx_cr=0, e_qy_cr=0, cx=0, cy=0, e_ixx_g_cr=0, e_iyy_g_cr=0, e_ixy_g_cr=0, e_ixx_c_cr=0, e_iyy_c_cr=0, e_ixy_c_cr=0, e_iuu_cr=0, e_i11_cr=0, e_i22_cr=0, phi_cr=0, elastic_modulus_ref=None, a_cr=None, qx_cr=None, qy_cr=None, ixx_g_cr=None, iyy_g_cr=None, ixy_g_cr=None, ixx_c_cr=None, iyy_c_cr=None, ixy_c_cr=None, iuu_cr=None, i11_cr=None, i22_cr=None)[source]

Class for storing cracked concrete section properties.

All properties with an e_ preceding the property are multiplied by the elastic modulus. In order to obtain transformed properties, call the calculate_transformed_properties() method.

Parameters

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

reset_results()[source]

Resets the analysis results.

Return type

None

calculate_transformed_properties(elastic_modulus)[source]

Calculates and stores transformed cracked properties using a reference elastic modulus.

Parameters

elastic_modulus (float) – Reference elastic modulus

plot_cracked_geometries(title='Cracked Geometries', **kwargs)[source]

Plots the geometries that remain (are in compression or are reinforcement) after a cracked analysis.

Parameters
  • title (str, default: 'Cracked Geometries') – Plot title

  • kwargs – Passed to plot_geometry()

Returns

Axes – Matplotlib axes object

print_results(fmt='8.6e')[source]

Prints the cracked concrete section properties to the terminal.

Parameters

fmt (str, default: '8.6e') – Number format

Note

A PrestressedSection object will return a tuple for the cracking moment m_cr, with the first value the cracking moment for positive bending and the second value the cracking moment for negative bending.

Calling calculate_transformed_properties() on a CrackedResults object stores the transformed cracked properties as attributes within the current object.

See also

For an application of the above, see the example Calculating Cracked Properties.

5.3. Moment Curvature Analysis#

Running a moment_curvature_analysis() returns a MomentCurvatureResults object. This object can be used to plot moment curvature results.

class MomentCurvatureResults(theta, n_target, kappa=<factory>, n=<factory>, m_x=<factory>, m_y=<factory>, m_xy=<factory>, convergence=<factory>, _kappa=0, _n_i=0, _m_x_i=0, _m_y_i=0, _failure=False, _failure_convergence=0)[source]

Class for storing moment curvature results.

Parameters
  • theta (float) – Angle (in radians) the neutral axis makes with the horizontal

  • n_target (float) – Target axial force axis (\(-\pi \leq \theta \leq \pi\))

  • kappa (List[float], default: <factory>) – List of curvatures

  • n (List[float], default: <factory>) – List of axial forces

  • m_x (List[float], default: <factory>) – List of bending moments about the x-axis

  • m_y (List[float], default: <factory>) – List of bending moments about the y-axis

  • m_xy (List[float], default: <factory>) – List of resultant bending moments

  • failure_geometry – Geometry object of the region of the cross-section that failed, ending the moment curvature analysis

  • convergence (List[float], default: <factory>) – The critical ratio between the strain and the failure strain within the cross-section for each curvature step in the analysis. A value of one indicates failure.

plot_results(m_scale=1e-06, fmt='o-', **kwargs)[source]

Plots the moment curvature results.

Parameters
  • m_scale (float, default: 1e-06) – Scaling factor to apply to bending moment

  • fmt (str, default: 'o-') – Plot format string

  • kwargs – Passed to plotting_context()

Returns

Axes – Matplotlib axes object

static plot_multiple_results(moment_curvature_results, labels, m_scale=1e-06, fmt='o-', **kwargs)[source]

Plots multiple moment curvature results.

Parameters
  • moment_curvature_results (List[MomentCurvatureResults]) – List of moment curvature results objects

  • labels (List[str]) – List of labels for each moment curvature diagram

  • m_scale (float, default: 1e-06) – Scaling factor to apply to bending moment

  • fmt (str, default: 'o-') – Plot format string

  • kwargs – Passed to plotting_context()

Returns

Axes – Matplotlib axes object

See also

For an application of the above, see the example Moment Curvature Analysis.

5.4. Ultimate Bending Capacity#

The ultimate_bending_capacity() method returns an UltimateBendingResults object. This object stores results relating to the analysis and allows the results to be printed to the terminal by calling the print_results() method.

class UltimateBendingResults(theta, d_n=0, k_u=0, n=0, m_x=0, m_y=0, m_xy=0, label=None)[source]

Class for storing ultimate bending results.

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

  • d_n (float, default: 0) – Ultimate neutral axis depth

  • k_u (float, default: 0) – Neutral axis parameter (d_n / d)

  • n (float, default: 0) – Resultant axial force

  • m_x (float, default: 0) – Resultant bending moment about the x-axis

  • m_y (float, default: 0) – Resultant bending moment about the y-axis

  • m_xy (float, default: 0) – Resultant bending moment

  • label (Optional[str], default: None) – Result label

print_results(fmt='8.6e')[source]

Prints the ultimate bending results to the terminal.

Parameters

fmt (str, default: '8.6e') – Number format

See also

For an application of the above, see the example Ultimate Bending Capacity.

5.5. Moment Interaction Diagram#

Calling the moment_interaction_diagram() method returns a MomentInteractionResults object. This object can be used to plot moment interaction results.

class MomentInteractionResults(results=<factory>)[source]

Class for storing moment interaction results.

Parameters

results (List[UltimateBendingResults], default: <factory>) – List of ultimate bending result objects

plot_diagram(n_scale=0.001, m_scale=1e-06, moment='m_x', fmt='o-', labels=False, label_offset=False, **kwargs)[source]

Plots a moment interaction diagram.

Parameters
  • n_scale (float, default: 0.001) – Scaling factor to apply to axial force

  • m_scale (float, default: 1e-06) – Scaling factor to apply to the bending moment

  • moment (str, default: 'm_x') – Which moment to plot, acceptable values are "m_x", "m_y" or "m_xy"

  • fmt (str, default: 'o-') – Plot format string

  • labels (bool, default: False) – If set to True, also plots labels on the diagram

  • label_offset (bool, default: False) – If set to True, attempts to offset the label from the diagram

  • kwargs – Passed to plotting_context()

Returns

Axes – Matplotlib axes object

static plot_multiple_diagrams(moment_interaction_results, labels, n_scale=0.001, m_scale=1e-06, moment='m_x', fmt='o-', **kwargs)[source]

Plots multiple moment interaction diagrams.

Parameters
  • moment_interaction_results (List[MomentInteractionResults]) – List of moment interaction results objects

  • labels (List[str]) – List of labels for each moment interaction diagram

  • n_scale (float, default: 0.001) – Scaling factor to apply to axial force

  • m_scale (float, default: 1e-06) – Scaling factor to apply to bending moment

  • moment (str, default: 'm_x') – Which moment to plot, acceptable values are "m_x", "m_y" or "m_xy"

  • fmt (str, default: 'o-') – Plot format string

  • kwargs – Passed to plotting_context()

Returns

Axes – Matplotlib axes object

point_in_diagram(n, m, moment='m_x')[source]

Determines whether or not the combination of axial force and moment lies within the moment interaction diagram.

Parameters
  • n (float) – Axial force

  • m (float) – Bending moment

  • moment (str, default: 'm_x') – Which moment to analyse, acceptable values are "m_x", "m_y" or "m_xy"

Returns

bool – True, if combination of axial force and moment is within the diagram

See also

For an application of the above, see the example Moment Interaction Diagram.

5.6. Biaxial Bending Diagram#

The biaxial_bending_diagram() method returns a BiaxialBendingResults object. This object can be used to plot biaxial bending results.

class BiaxialBendingResults(n, results=<factory>)[source]

Class for storing biaxial bending results.

Parameters
  • n (float) – Net axial force

  • results (List[UltimateBendingResults], default: <factory>) – List of ultimate bending result objects

plot_diagram(m_scale=1e-06, fmt='o-', **kwargs)[source]

Plots a biaxial bending diagram.

Parameters
  • m_scale (float, default: 1e-06) – Scaling factor to apply to bending moment

  • fmt (str, default: 'o-') – Plot format string

  • kwargs – Passed to plotting_context()

Returns

Axes – Matplotlib axes object

static plot_multiple_diagrams_2d(biaxial_bending_results, labels=None, m_scale=1e-06, fmt='o-', **kwargs)[source]

Plots multiple biaxial bending diagrams in a 2D plot.

Parameters
  • biaxial_bending_results (List[BiaxialBendingResults]) – List of biaxial bending results objects

  • labels (Optional[List[str]], default: None) – List of labels for each biaxial bending diagram, if not provided labels are axial forces

  • m_scale (float, default: 1e-06) – Scaling factor to apply to bending moment

  • fmt (str, default: 'o-') – Plot format string

  • kwargs – Passed to plotting_context()

Returns

Axes – Matplotlib axes object

static plot_multiple_diagrams_3d(biaxial_bending_results, n_scale=0.001, m_scale=1e-06, fmt='-')[source]

Plots multiple biaxial bending diagrams in a 3D plot.

Parameters
  • biaxial_bending_results (List[BiaxialBendingResults]) – List of biaxial bending results objects

  • n_scale (float, default: 0.001) – Scaling factor to apply to axial force

  • m_scale (float, default: 1e-06) – Scaling factor to apply to bending moment

  • fmt (str, default: '-') – Plot format string

Returns

Axes – Matplotlib axes object

point_in_diagram(m_x, m_y)[source]

Determines whether or not the combination of bending moments lies within the biaxial bending diagram.

Parameters
  • m_x (float) – Bending moment about the x-axis

  • m_y (float) – Bending moment about the y-axis

Returns

bool – True, if combination of bendings moments is within the diagram

See also

For an application of the above, see the example Biaxial Bending Diagram.

5.7. Stress Analysis#

Stress analyses can be performed by calling any of the following methods: calculate_uncracked_stress(), calculate_cracked_stress(), calculate_service_stress() and calculate_ultimate_stress(). All these methods return a StressResult object. This object stores results relating to the stress analysis and can also be used to plot stress results.

class StressResult(concrete_section, concrete_analysis_sections, concrete_stresses, concrete_forces, meshed_reinforcement_sections, meshed_reinforcement_stresses, meshed_reinforcement_forces, lumped_reinforcement_geometries, lumped_reinforcement_stresses, lumped_reinforcement_strains, lumped_reinforcement_forces, strand_geometries=<factory>, strand_stresses=<factory>, strand_strains=<factory>, strand_forces=<factory>, _m_net=None)[source]

Class for storing stress results.

The lever arm is computed to the elastic centroid.

Parameters
  • concrete_analysis_sections (List[AnalysisSection]) – List of concrete analysis section objects present in the stress analysis, which can be visualised by calling the plot_mesh() or plot_shape()

  • concrete_stresses (List[ndarray]) – List of concrete stresses at the nodes of each concrete analysis section

  • concrete_forces (List[Tuple[float, float, float]]) – List of net forces for each concrete analysis section and its lever arm (force, d_x, d_y)

  • meshed_reinforcement_sections (List[AnalysisSection]) – List of meshed reinforcement section objects present in the stress analysis

  • meshed_reinforcement_stresses (List[ndarray]) – List of meshed reinforcement stresses at the nodes of each meshed reinforcement analysis section

  • meshed_reinforcement_forces (List[Tuple[float, float, float]]) – List of net forces for each meshed reinforcement analysis section and its lever arm (force, d_x, d_y)

  • lumped_reinforcement_geometries (List[CPGeom]) – List of lumped reinforcement geometry objects present in the stress analysis

  • lumped_reinforcement_stresses (List[float]) – List of lumped reinforcement stresses for each lumped geometry

  • lumped_reinforcement_strains (List[float]) – List of lumped reinforcement strains for each lumped geometry

  • lumped_reinforcement_forces (List[Tuple[float, float, float]]) – List of net forces for each lumped reinforcement geometry and its lever arm (force, d_x, d_y)

  • strand_geometries (List[CPGeom], default: <factory>) – List of strand geometry objects present in the stress analysis

  • strand_stresses (List[float], default: <factory>) – List of strand stresses for each strand

  • strand_strains (List[float], default: <factory>) – List of strand strains for each strand

  • strand_forces (List[Tuple[float, float, float]], default: <factory>) – List of net forces for each strand geometry and its lever arm (force, d_x, d_y)

plot_stress(title='Stress', conc_cmap='RdGy', reinf_cmap='bwr', **kwargs)[source]

Plots concrete and steel stresses on a concrete section.

Parameters
  • title (str, default: 'Stress') – Plot title

  • conc_cmap (str, default: 'RdGy') – Colour map for the concrete stress

  • reinf_cmap (str, default: 'bwr') – Colour map for the reinforcement stress

  • kwargs – Passed to plotting_context()

Returns

Axes – Matplotlib axes object

sum_forces()[source]

Returns the sum of the internal forces.

Returns

float – Sum of internal forces

sum_moments()[source]

Returns the sum of the internal moments.

Returns

Tuple[float, float, float] – Sum of internal moments about each axis and resultant moment (m_x, m_y, m)

get_concrete_stress_limits()[source]

Returns the minimum and maximum concrete stress.

Returns

Tuple[float, float] – Minimum concrete stress, maximum concrete stress

See also

For an application of the above, see the example Stress Analysis.