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

Returns the gross section properties of the reinforced concrete section.

Returns:

Gross concrete properties object

Return type:

GrossProperties

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 concreteproperties.results.GrossProperties[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: str = '8.6e') None[source]

Prints the gross concrete section properties to the terminal.

Parameters:

fmt (str) – Number format

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

ConcreteSection.get_transformed_gross_properties(elastic_modulus: float) TransformedGrossProperties[source]

Transforms gross section properties given a reference elastic modulus.

Parameters:

elastic_modulus (float) – Reference elastic modulus

Returns:

Transformed concrete properties object

Return type:

TransformedGrossProperties

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 concreteproperties.results.TransformedGrossProperties[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: str = '8.6e') None[source]

Prints the transformed gross concrete section properties to the terminal.

Parameters:

fmt (str) – 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 concreteproperties.results.CrackedResults[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() None[source]

Resets the analysis results.

calculate_transformed_properties(elastic_modulus: float) None[source]

Calculates and stores transformed cracked properties.

Parameters:

elastic_modulus (float) – Reference elastic modulus

plot_cracked_geometries(title: str = 'Cracked Geometries', **kwargs) matplotlib.axes.Axes[source]

Plots geometries that remain (compression/reinf.) after a cracked analysis.

Parameters:
Returns:

Matplotlib axes object

Return type:

matplotlib.axes.Axes

print_results(fmt: str = '8.6e') None[source]

Prints the cracked concrete section properties to the terminal.

Parameters:

fmt (str) – 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.

Moment Curvature Analysis#

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

class concreteproperties.results.MomentCurvatureResults[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]) – List of curvatures

  • n (list[float]) – List of axial forces

  • m_x (list[float]) – List of bending moments about the x-axis

  • m_y (list[float]) – List of bending moments about the y-axis

  • m_xy (list[float]) – 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]) – 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: float = 1e-06, fmt: str = 'o-', **kwargs) matplotlib.axes.Axes[source]

Plots the moment curvature results.

Parameters:
  • m_scale (float) – Scaling factor to apply to bending moment

  • fmt (str) – Plot format string

  • kwargs – Passed to plotting_context()

Returns:

Matplotlib axes object

Return type:

matplotlib.axes.Axes

static plot_multiple_results(moment_curvature_results: list[MomentCurvatureResults], labels: list[str], m_scale: float = 1e-06, fmt: str = 'o-', **kwargs) matplotlib.axes.Axes[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) – Scaling factor to apply to bending moment

  • fmt (str) – Plot format string

  • kwargs – Passed to plotting_context()

Returns:

Matplotlib axes object

Return type:

matplotlib.axes.Axes

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 concreteproperties.results.UltimateBendingResults[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) – Ultimate neutral axis depth

  • k_u (float) – Neutral axis parameter (d_n / d)

  • n (float) – Resultant axial force

  • m_x (float) – Resultant bending moment about the x-axis

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

  • m_xy (float) – Resultant bending moment

  • label (str | None) – Result label

print_results(fmt: str = '8.6e') None[source]

Prints the ultimate bending results to the terminal.

Parameters:

fmt (str) – 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 concreteproperties.results.MomentInteractionResults[source]

Class for storing moment interaction results.

Parameters:

results (list[UltimateBendingResults]) – List of ultimate bending result objects

plot_diagram(n_scale: float = 0.001, m_scale: float = 1e-06, moment: str = 'm_x', fmt: str = 'o-', labels: bool = False, label_offset: bool = False, **kwargs) matplotlib.axes.Axes[source]

Plots a moment interaction diagram.

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

  • m_scale (float) – Scaling factor to apply to the bending moment

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

  • fmt (str) – Plot format string

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

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

  • kwargs – Passed to plotting_context()

Returns:

Matplotlib axes object

Return type:

matplotlib.axes.Axes

static plot_multiple_diagrams(moment_interaction_results: list[MomentInteractionResults], labels: list[str], n_scale: float = 0.001, m_scale: float = 1e-06, moment: str = 'm_x', fmt: str = 'o-', **kwargs) matplotlib.axes.Axes[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) – Scaling factor to apply to axial force

  • m_scale (float) – Scaling factor to apply to bending moment

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

  • fmt (str) – Plot format string

  • kwargs – Passed to plotting_context()

Returns:

Matplotlib axes object

Return type:

matplotlib.axes.Axes

point_in_diagram(n: float, m: float, moment: str = 'm_x') bool[source]

Determines whether or not the design point lies within the diagram.

Parameters:
  • n (float) – Axial force

  • m (float) – Bending moment

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

Returns:

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

Return type:

bool

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 concreteproperties.results.BiaxialBendingResults[source]

Class for storing biaxial bending results.

Parameters:
plot_diagram(m_scale: float = 1e-06, fmt: str = 'o-', **kwargs) matplotlib.axes.Axes[source]

Plots a biaxial bending diagram.

Parameters:
  • m_scale (float) – Scaling factor to apply to bending moment

  • fmt (str) – Plot format string

  • kwargs – Passed to plotting_context()

Returns:

Matplotlib axes object

Return type:

matplotlib.axes.Axes

static plot_multiple_diagrams_2d(biaxial_bending_results: list[BiaxialBendingResults], labels: list[str] | None = None, m_scale: float = 1e-06, fmt: str = 'o-', **kwargs) matplotlib.axes.Axes[source]

Plots multiple biaxial bending diagrams in a 2D plot.

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

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

  • m_scale (float) – Scaling factor to apply to bending moment

  • fmt (str) – Plot format string

  • kwargs – Passed to plotting_context()

Returns:

Matplotlib axes object

Return type:

matplotlib.axes.Axes

static plot_multiple_diagrams_3d(biaxial_bending_results: list[BiaxialBendingResults], n_scale: float = 0.001, m_scale: float = 1e-06, fmt: str = '-') matplotlib.axes.Axes[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) – Scaling factor to apply to axial force

  • m_scale (float) – Scaling factor to apply to bending moment

  • fmt (str) – Plot format string

Returns:

Matplotlib axes object

Return type:

matplotlib.axes.Axes

point_in_diagram(m_x: float, m_y: float) bool[source]

Determines whether or not the design point lies within the biaxial diagram.

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

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

Returns:

True, if combination of bendings moments is within the diagram

Return type:

bool

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 concreteproperties.results.StressResult[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[np.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[np.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]) – List of strand geometry objects present in the stress analysis

  • strand_stresses (list[float]) – List of strand stresses for each strand

  • strand_strains (list[float]) – List of strand strains for each strand

  • strand_forces (list[tuple[float, float, float]]) – List of net forces for each strand geometry and its lever arm (force, d_x, d_y)

plot_stress(title: str = 'Stress', conc_cmap: str = 'RdGy', reinf_cmap: str = 'bwr', **kwargs) matplotlib.axes.Axes[source]

Plots concrete and steel stresses on a concrete section.

Parameters:
  • title (str) – Plot title

  • conc_cmap (str) – Colour map for the concrete stress

  • reinf_cmap (str) – Colour map for the reinforcement stress

  • kwargs – Passed to plotting_context()

Returns:

Matplotlib axes object

Return type:

matplotlib.axes.Axes

sum_forces() float[source]

Returns the sum of the internal forces.

Returns:

Sum of internal forces

Return type:

float

sum_moments() tuple[float, float, float][source]

Returns the sum of the internal moments.

Returns:

Sum of internal moments about each axis and resultant moment (m_x, m_y, m)

Return type:

tuple[float, float, float]

get_concrete_stress_limits() tuple[float, float][source]

Returns the minimum and maximum concrete stress.

Returns:

Minimum concrete stress, maximum concrete stress

Return type:

tuple[float, float]

See also

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