1. Calculating Area Properties#

This example demonstrates how to create a simple reinforced concrete cross-section and obtain the gross area properties. We start by importing the necessary modules.

[1]:
from concreteproperties.material import Concrete, Steel
from concreteproperties.stress_strain_profile import (
    ConcreteLinear,
    RectangularStressBlock,
    SteelElasticPlastic,
)
from sectionproperties.pre.library.concrete_sections import concrete_rectangular_section
from concreteproperties.concrete_section import ConcreteSection

1.1. Assign Materials#

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

[2]:
concrete = Concrete(
    name="32 MPa Concrete",
    density=2.4e-6,
    stress_strain_profile=ConcreteLinear(elastic_modulus=30.1e3),
    ultimate_stress_strain_profile=RectangularStressBlock(
        compressive_strength=32,
        alpha=0.802,
        gamma=0.89,
        ultimate_strain=0.003,
    ),
    alpha_squash=0.85,
    flexural_tensile_strength=3.4,
    colour="lightgrey",
)

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

1.2. Create Geometry and Concrete Section#

The section being analysed in this example is a 600D x 400W rectangular beam. The reinforcement detailed is 3N20 top bars and 3N24 bottom bars, with 30 mm of clear cover. The geometry is generated using the sectionproperties concrete sections library.

[3]:
geom = concrete_rectangular_section(
    b=400,
    d=600,
    dia_top=20,
    n_top=3,
    dia_bot=24,
    n_bot=3,
    n_circle=4,
    cover=30,
    area_top=310,
    area_bot=450,
    conc_mat=concrete,
    steel_mat=steel,
)

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

1.3. Gross Properties#

Creating a ConcreteSection object automatically calculates the gross area properties of the reinforced concrete cross-section. These can be obtained by using the get_gross_properties() method. The section properties can be printed by calling the print_results() method.

[4]:
gross_props = conc_sec.get_gross_properties()
gross_props.print_results(fmt=".3e")
    Gross Concrete Section Properties    
┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Property                 ┃      Value ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Area               │  2.400e+05 │
│ Concrete Area            │  2.377e+05 │
│ Steel Area               │  2.280e+03 │
│ Axial Rigidity (EA)      │  7.611e+09 │
│ Mass (per unit length)   │  5.884e-01 │
│ Perimeter                │  2.000e+03 │
│ E.Qx                     │  2.265e+12 │
│ E.Qy                     │  1.522e+12 │
│ x-Centroid               │  2.000e+02 │
│ y-Centroid               │  2.976e+02 │
│ E.Ixx_g                  │  9.168e+14 │
│ E.Iyy_g                  │  4.073e+14 │
│ E.Ixy_g                  │  4.531e+14 │
│ E.Ixx_c                  │  2.426e+14 │
│ E.Iyy_c                  │  1.028e+14 │
│ E.Ixy_c                  │  0.000e+00 │
│ E.I11                    │  2.426e+14 │
│ E.I22                    │  1.028e+14 │
│ Principal Axis Angle     │  0.000e+00 │
│ E.Zxx+                   │  8.024e+11 │
│ E.Zxx-                   │  8.153e+11 │
│ E.Zyy+                   │  5.142e+11 │
│ E.Zyy-                   │  5.142e+11 │
│ E.Z11+                   │  8.024e+11 │
│ E.Z11-                   │  8.153e+11 │
│ E.Z22+                   │  5.142e+11 │
│ E.Z22-                   │  5.142e+11 │
│ Squash Load              │  7.606e+06 │
│ Tensile Load             │ -1.140e+06 │
│ x-Axial Plastic Centroid │  2.000e+02 │
│ y-Axial Plastic Centroid │  2.934e+02 │
│ Ultimate Concrete Strain │  3.000e-03 │
└──────────────────────────┴────────────┘

1.4. Transformed Properties#

The above section properties are multiplied by the elastic moduli, e.g. axial rigidity (EA) and flexural rigidity (EI). Transformed section properties can be obtained using get_transformed_gross_properties() and providing a reference elastic_modulus.

[5]:
transformed_props = conc_sec.get_transformed_gross_properties(elastic_modulus=30.1e3)
transformed_props.print_results(fmt=".3e")
   Transformed Gross    
    Concrete Section    
       Properties       
┏━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Property ┃     Value ┃
┡━━━━━━━━━━╇━━━━━━━━━━━┩
│ E_ref    │ 3.010e+04 │
│ Area     │ 7.973e+00 │
│ Qx       │ 7.526e+07 │
│ Qy       │ 5.057e+07 │
│ Ixx_g    │ 3.046e+10 │
│ Iyy_g    │ 1.353e+10 │
│ Ixy_g    │ 1.505e+10 │
│ Ixx_c    │ 8.061e+09 │
│ Iyy_c    │ 3.417e+09 │
│ Ixy_c    │ 0.000e+00 │
│ I11      │ 8.061e+09 │
│ I22      │ 3.417e+09 │
│ Zxx+     │ 2.666e+07 │
│ Zxx-     │ 2.708e+07 │
│ Zyy+     │ 1.708e+07 │
│ Zyy-     │ 1.708e+07 │
│ Z11+     │ 2.666e+07 │
│ Z11-     │ 2.708e+07 │
│ Z22+     │ 1.708e+07 │
│ Z22-     │ 1.708e+07 │
└──────────┴───────────┘