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.000000e+00 │ │ n │ 0.000000e+00 │ │ m │ 0.000000e+00 │ │ m_cr │ 2.366267e+08 │ │ d_nc │ 1.293897e+02 │ │ E.A_cr │ 5.773397e+09 │ │ E.Qx_cr │ 4.449039e+12 │ │ E.Qy_cr │ 7.629395e-06 │ │ x-Centroid │ 1.321474e-15 │ │ y-Centroid │ 7.706103e+02 │ │ E.Ixx_g_cr │ 3.710634e+15 │ │ E.Iyy_g_cr │ 6.441988e+14 │ │ E.Ixy_g_cr │ -4.062500e-01 │ │ E.Ixx_c_cr │ 2.821589e+14 │ │ E.Iyy_c_cr │ 6.441988e+14 │ │ E.Ixy_c_cr │ -4.121293e-01 │ │ E.Iuu_cr │ 2.821589e+14 │ │ E.I11_cr │ 6.441988e+14 │ │ E.I22_cr │ 2.821589e+14 │ │ phi_cr │ -1.570796e+00 │ └────────────┴───────────────┘
Cracked Concrete Section Properties ┏━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓ ┃ Property ┃ Value ┃ ┡━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩ │ theta │ 3.141593e+00 │ │ n │ 0.000000e+00 │ │ m │ 0.000000e+00 │ │ m_cr │ 4.275210e+08 │ │ d_nc │ 1.585429e+02 │ │ E.A_cr │ 2.201343e+09 │ │ E.Qx_cr │ 3.490073e+11 │ │ E.Qy_cr │ 7.629395e-06 │ │ x-Centroid │ 3.465792e-15 │ │ y-Centroid │ 1.585429e+02 │ │ E.Ixx_g_cr │ 1.922800e+14 │ │ E.Iyy_g_cr │ 4.999762e+13 │ │ E.Ixy_g_cr │ 0.000000e+00 │ │ E.Ixx_c_cr │ 1.369473e+14 │ │ E.Iyy_c_cr │ 4.999762e+13 │ │ E.Ixy_c_cr │ -1.209587e-03 │ │ E.Iuu_cr │ 1.369473e+14 │ │ E.I11_cr │ 1.369473e+14 │ │ E.I22_cr │ 4.999762e+13 │ │ phi_cr │ 0.000000e+00 │ └────────────┴───────────────┘
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]:
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()
cracked_res_hog.print_results()
Cracked Concrete Section Properties ┏━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓ ┃ Property ┃ Value ┃ ┡━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩ │ theta │ 0.000000e+00 │ │ n │ 0.000000e+00 │ │ m │ 0.000000e+00 │ │ E_ref │ 3.280000e+04 │ │ m_cr │ 2.366267e+08 │ │ d_nc │ 1.293897e+02 │ │ A_cr │ 1.760182e+05 │ │ E.A_cr │ 5.773397e+09 │ │ Qx_cr │ 1.356414e+08 │ │ Qy_cr │ 2.326035e-10 │ │ E.Qx_cr │ 4.449039e+12 │ │ E.Qy_cr │ 7.629395e-06 │ │ x-Centroid │ 1.321474e-15 │ │ y-Centroid │ 7.706103e+02 │ │ Ixx_g_cr │ 1.131291e+11 │ │ Iyy_g_cr │ 1.964021e+10 │ │ Ixy_g_cr │ -1.238567e-05 │ │ Ixx_c_cr │ 8.602406e+09 │ │ Iyy_c_cr │ 1.964021e+10 │ │ Ixy_c_cr │ -1.256492e-05 │ │ Iuu_cr │ 8.602406e+09 │ │ I11_cr │ 1.964021e+10 │ │ I22_cr │ 8.602406e+09 │ │ E.Ixx_g_cr │ 3.710634e+15 │ │ E.Iyy_g_cr │ 6.441988e+14 │ │ E.Ixy_g_cr │ -4.062500e-01 │ │ E.Ixx_c_cr │ 2.821589e+14 │ │ E.Iyy_c_cr │ 6.441988e+14 │ │ E.Ixy_c_cr │ -4.121293e-01 │ │ E.Iuu_cr │ 2.821589e+14 │ │ E.I11_cr │ 6.441988e+14 │ │ E.I22_cr │ 2.821589e+14 │ │ phi_cr │ -1.570796e+00 │ └────────────┴───────────────┘
Cracked Concrete Section Properties ┏━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓ ┃ Property ┃ Value ┃ ┡━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩ │ theta │ 3.141593e+00 │ │ n │ 0.000000e+00 │ │ m │ 0.000000e+00 │ │ E_ref │ 3.280000e+04 │ │ m_cr │ 4.275210e+08 │ │ d_nc │ 1.585429e+02 │ │ A_cr │ 6.711410e+04 │ │ E.A_cr │ 2.201343e+09 │ │ Qx_cr │ 1.064047e+07 │ │ Qy_cr │ 2.326035e-10 │ │ E.Qx_cr │ 3.490073e+11 │ │ E.Qy_cr │ 7.629395e-06 │ │ x-Centroid │ 3.465792e-15 │ │ y-Centroid │ 1.585429e+02 │ │ Ixx_g_cr │ 5.862194e+09 │ │ Iyy_g_cr │ 1.524318e+09 │ │ Ixy_g_cr │ 0.000000e+00 │ │ Ixx_c_cr │ 4.175223e+09 │ │ Iyy_c_cr │ 1.524318e+09 │ │ Ixy_c_cr │ -3.687764e-08 │ │ Iuu_cr │ 4.175223e+09 │ │ I11_cr │ 4.175223e+09 │ │ I22_cr │ 1.524318e+09 │ │ E.Ixx_g_cr │ 1.922800e+14 │ │ E.Iyy_g_cr │ 4.999762e+13 │ │ E.Ixy_g_cr │ 0.000000e+00 │ │ E.Ixx_c_cr │ 1.369473e+14 │ │ E.Iyy_c_cr │ 4.999762e+13 │ │ E.Ixy_c_cr │ -1.209587e-03 │ │ E.Iuu_cr │ 1.369473e+14 │ │ E.I11_cr │ 1.369473e+14 │ │ E.I22_cr │ 4.999762e+13 │ │ phi_cr │ 0.000000e+00 │ └────────────┴───────────────┘
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'}>