Calculating Cracked Properties

This example demonstrates how to obtain and display the cracked area properties. We start by importing the necessary modules.

[1]:
import numpy as np
from sectionproperties.pre.library import concrete_tee_section

from concreteproperties import (
    Concrete,
    ConcreteLinear,
    ConcreteSection,
    RectangularStressBlock,
    SteelBar,
    SteelElasticPlastic,
)

Assign Materials

The materials used in this example will be 40 MPa concrete and 500 MPa steel, specified in accordance with AS 3600:2018.

[2]:
concrete = Concrete(
    name="40 MPa Concrete",
    density=2.4e-6,
    stress_strain_profile=ConcreteLinear(elastic_modulus=32.8e3),
    ultimate_stress_strain_profile=RectangularStressBlock(
        compressive_strength=40,
        alpha=0.79,
        gamma=0.87,
        ultimate_strain=0.003,
    ),
    flexural_tensile_strength=3.8,
    colour="lightgrey",
)

steel = SteelBar(
    name="500 MPa Steel",
    density=7.85e-6,
    stress_strain_profile=SteelElasticPlastic(
        yield_strength=500,
        elastic_modulus=200e3,
        fracture_strain=0.05,
    ),
    colour="grey",
)

Create Geometry and Concrete Section

The section being analysed in this example is a 900D x 300W tee-beam with a 1200W x 200D slab. The reinforcement detailed is 6N16 top bars and 3N32 bottom bars, with 30 mm of clear cover. The geometry is generated using the sectionproperties concrete sections library.

[3]:
geom = concrete_tee_section(
    d=900,
    b=300,
    d_f=200,
    b_f=1200,
    dia_top=16,
    area_top=200,
    n_top=6,
    c_top=30,
    dia_bot=32,
    area_bot=800,
    n_bot=3,
    c_bot=30,
    conc_mat=concrete,
    steel_mat=steel,
)

conc_sec = ConcreteSection(geom)
conc_sec.plot_section()
../_images/examples_cracked_properties_6_0.svg
[3]:
<Axes: title={'center': 'Reinforced Concrete Section'}>

Calculate Cracked Properties

In this example we’ll peform a cracked analysis for sagging (\(\theta=0\)) and hogging (\(\theta=\pi\)). To do this we call the calculate_cracked_properties() method:

[4]:
cracked_res_sag = conc_sec.calculate_cracked_properties()
cracked_res_hog = conc_sec.calculate_cracked_properties(theta=np.pi)

We can print the results of these analyses by calling the print_results method:

[5]:
cracked_res_sag.print_results()
cracked_res_hog.print_results()
   Cracked Concrete Section    
          Properties           
┏━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┓
┃ Property             Value ┃
┡━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━┩
│ theta           0.000 rads │
├────────────┼────────────────┤
│ m_cr          236.6 x 10^6 │
│ d_nc                 129.4 │
│ E.A_cr        5.773 x 10^9 │
├────────────┼────────────────┤
│ E.Qx_cr      4.449 x 10^12 │
│ E.Qy_cr      7.629 x 10^-6 │
│ x-Centroid  1.321 x 10^-15 │
│ y-Centroid           770.6 │
├────────────┼────────────────┤
│ E.Ixx_g_cr   3.711 x 10^15 │
│ E.Iyy_g_cr   644.2 x 10^12 │
│ E.Ixy_g_cr  -406.2 x 10^-3 │
│ E.Ixx_c_cr   282.2 x 10^12 │
│ E.Iyy_c_cr   644.2 x 10^12 │
│ E.Ixy_c_cr  -412.1 x 10^-3 │
│ E.Iuu_cr     282.2 x 10^12 │
│ E.I11_cr     644.2 x 10^12 │
│ E.I22_cr     282.2 x 10^12 │
├────────────┼────────────────┤
│ phi_cr         -1.571 rads │
└────────────┴────────────────┘
   Cracked Concrete Section    
          Properties           
┏━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┓
┃ Property             Value ┃
┡━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━┩
│ theta           3.142 rads │
├────────────┼────────────────┤
│ m_cr          427.5 x 10^6 │
│ d_nc                 158.5 │
│ E.A_cr        2.201 x 10^9 │
├────────────┼────────────────┤
│ E.Qx_cr       349.0 x 10^9 │
│ E.Qy_cr      7.629 x 10^-6 │
│ x-Centroid  3.466 x 10^-15 │
│ y-Centroid           158.5 │
├────────────┼────────────────┤
│ E.Ixx_g_cr   192.3 x 10^12 │
│ E.Iyy_g_cr   50.00 x 10^12 │
│ E.Ixy_g_cr           0.000 │
│ E.Ixx_c_cr   136.9 x 10^12 │
│ E.Iyy_c_cr   50.00 x 10^12 │
│ E.Ixy_c_cr  -1.210 x 10^-3 │
│ E.Iuu_cr     136.9 x 10^12 │
│ E.I11_cr     136.9 x 10^12 │
│ E.I22_cr     50.00 x 10^12 │
├────────────┼────────────────┤
│ phi_cr          0.000 rads │
└────────────┴────────────────┘

Transformed Cracked Properties

We can compute the transformed properties by calling the calculate_transformed_properties() method on the CrackedResults objects and also print these results:

[6]:
from concreteproperties.post import si_kn_m, si_n_mm

si_n_mm.radians = False  # show degrees

cracked_res_sag.calculate_transformed_properties(elastic_modulus=32.8e3)
cracked_res_hog.calculate_transformed_properties(elastic_modulus=32.8e3)

cracked_res_sag.print_results(units=si_kn_m)
cracked_res_hog.print_results(units=si_n_mm)
  Cracked Concrete Section Properties  
┏━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Property                     Value ┃
┡━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
│ theta                   0.000 rads │
│ E_ref             32.80 x 10^6 kPa │
├────────────┼────────────────────────┤
│ m_cr                    236.6 kN.m │
│ d_nc               129.4 x 10^-3 m │
│ A_cr             176.0 x 10^-3 m^2 │
│ E.A_cr             5.773 x 10^6 kN │
├────────────┼────────────────────────┤
│ Qx_cr            135.6 x 10^-3 m^3 │
│ Qy_cr           232.6 x 10^-21 m^3 │
│ E.Qx_cr          4.449 x 10^6 kN.m │
│ E.Qy_cr        7.629 x 10^-12 kN.m │
│ x-Centroid        1.321 x 10^-18 m │
│ y-Centroid         770.6 x 10^-3 m │
├────────────┼────────────────────────┤
│ Ixx_g_cr         113.1 x 10^-3 m^4 │
│ Iyy_g_cr         19.64 x 10^-3 m^4 │
│ Ixy_g_cr       -12.39 x 10^-18 m^4 │
│ Ixx_c_cr         8.602 x 10^-3 m^4 │
│ Iyy_c_cr         19.64 x 10^-3 m^4 │
│ Ixy_c_cr       -12.56 x 10^-18 m^4 │
│ Iuu_cr           8.602 x 10^-3 m^4 │
│ I11_cr           19.64 x 10^-3 m^4 │
│ I22_cr           8.602 x 10^-3 m^4 │
├────────────┼────────────────────────┤
│ E.Ixx_g_cr     3.711 x 10^6 kN.m^2 │
│ E.Iyy_g_cr     644.2 x 10^3 kN.m^2 │
│ E.Ixy_g_cr  -406.2 x 10^-12 kN.m^2 │
│ E.Ixx_c_cr     282.2 x 10^3 kN.m^2 │
│ E.Iyy_c_cr     644.2 x 10^3 kN.m^2 │
│ E.Ixy_c_cr  -412.1 x 10^-12 kN.m^2 │
│ E.Iuu_cr       282.2 x 10^3 kN.m^2 │
│ E.I11_cr       644.2 x 10^3 kN.m^2 │
│ E.I22_cr       282.2 x 10^3 kN.m^2 │
├────────────┼────────────────────────┤
│ phi_cr                 -1.571 rads │
└────────────┴────────────────────────┘
 Cracked Concrete Section Properties  
┏━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Property                    Value ┃
┡━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━┩
│ theta                  180.0 degs │
│ E_ref            32.80 x 10^3 MPa │
├────────────┼───────────────────────┤
│ m_cr            427.5 x 10^6 N.mm │
│ d_nc                     158.5 mm │
│ A_cr            67.11 x 10^3 mm^2 │
│ E.A_cr             2.201 x 10^9 N │
├────────────┼───────────────────────┤
│ Qx_cr           10.64 x 10^6 mm^3 │
│ Qy_cr         232.6 x 10^-12 mm^3 │
│ E.Qx_cr         349.0 x 10^9 N.mm │
│ E.Qy_cr        7.629 x 10^-6 N.mm │
│ x-Centroid      3.466 x 10^-15 mm │
│ y-Centroid               158.5 mm │
├────────────┼───────────────────────┤
│ Ixx_g_cr        5.862 x 10^9 mm^4 │
│ Iyy_g_cr        1.524 x 10^9 mm^4 │
│ Ixy_g_cr               0.000 mm^4 │
│ Ixx_c_cr        4.175 x 10^9 mm^4 │
│ Iyy_c_cr        1.524 x 10^9 mm^4 │
│ Ixy_c_cr      -36.88 x 10^-9 mm^4 │
│ Iuu_cr          4.175 x 10^9 mm^4 │
│ I11_cr          4.175 x 10^9 mm^4 │
│ I22_cr          1.524 x 10^9 mm^4 │
├────────────┼───────────────────────┤
│ E.Ixx_g_cr   192.3 x 10^12 N.mm^2 │
│ E.Iyy_g_cr   50.00 x 10^12 N.mm^2 │
│ E.Ixy_g_cr           0.000 N.mm^2 │
│ E.Ixx_c_cr   136.9 x 10^12 N.mm^2 │
│ E.Iyy_c_cr   50.00 x 10^12 N.mm^2 │
│ E.Ixy_c_cr  -1.210 x 10^-3 N.mm^2 │
│ E.Iuu_cr     136.9 x 10^12 N.mm^2 │
│ E.I11_cr     136.9 x 10^12 N.mm^2 │
│ E.I22_cr     50.00 x 10^12 N.mm^2 │
├────────────┼───────────────────────┤
│ phi_cr                 0.000 degs │
└────────────┴───────────────────────┘

Specific results can be obtained by referencing the associated attribute in the CrackedResults object:

[7]:
cracking_moment = cracked_res_sag.m_cr
neutral_axis_depth = cracked_res_sag.d_nc
cracked_i = cracked_res_sag.iuu_cr

print(f"M_cr = {cracking_moment / 1e6:.2f} kN.m")
print(f"d_nc = {neutral_axis_depth:.2f} mm")
print(f"I_cr = {cracked_i:.3e} mm^4")
M_cr = 236.63 kN.m
d_nc = 129.39 mm
I_cr = 8.602e+09 mm^4

Plot Cracked Geometries

Finally, the cracked geometry can be displayed by calling the plot_cracked_geometries() method:

[8]:
cracked_res_sag.plot_cracked_geometries(labels=[], cp=False, legend=False)
../_images/examples_cracked_properties_16_0.svg
[8]:
<Axes: title={'center': 'Cracked Geometries'}>
[9]:
cracked_res_hog.plot_cracked_geometries(labels=[], cp=False, legend=False)
../_images/examples_cracked_properties_17_0.svg
[9]:
<Axes: title={'center': 'Cracked Geometries'}>