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()
[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)
[8]:
<Axes: title={'center': 'Cracked Geometries'}>
[9]:
cracked_res_hog.plot_cracked_geometries(labels=[], cp=False, legend=False)
[9]:
<Axes: title={'center': 'Cracked Geometries'}>