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.

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, e_a=0, mass=0, perimeter=0, e_qx=0, e_qy=0, cx=0, cy=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)[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.

Cracked Area Properties#

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

class CrackedResults(theta, 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\))

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

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.

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, kappa=<factory>, n=<factory>, m_x=<factory>, m_y=<factory>, m_xy=<factory>, _n_i=0, _m_x_i=0, _m_y_i=0, _failure=False)[source]

Class for storing moment curvature results.

Parameters
  • theta (float) – Angle (in radians) the neutral axis makes with the horizontal 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

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.

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.

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.

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.

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

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)

See also

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