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, SteelBar
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,
    ),
    flexural_tensile_strength=3.4,
    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",
)

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]:
<Axes: 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 │
│ Lumped Reinforcement 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 │
│ x-Centroid (Gross)        │  2.000e+02 │
│ y-Centroid (Gross)        │  3.000e+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                   │ -1.875e-01 │
│ 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 │
│ 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     │  2.529e+05 │
│ 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    │ -6.229e-06 │
│ 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 │
└──────────┴────────────┘