Skip to content

mbonatte/secan

Repository files navigation

unittest

SecAn - Section Analysis

Section Analysis is a module that enables the modelling and analysis of custom cross-sections. Section Analysis is helpful for the evaluation of section properties and nonlinear response.

You can try the module via Google Colab.

How to import SecAn

To access SecAn and its functions import it in your Python code like this:

import secan as sa

We shorten the imported name to sa for better code readability using SecAn.

How to use SecAn

Import SecAn

import secan as sa

Define the Materials

The first step is to define the materials.

concrete_25 = sa.material.Concrete(fc=25e6)

steel_500   = sa.material.Steel(young=210e9,
                                fy=500e6,
                                ultimate_strain=10e-3)

Note: Be aware that SecAn does not apply any partial safety factors, so their application should be done before creating the material.

Define the Geometries

The second step is to create concrete geometries.

rect_20x60 = sa.geometry.Rect_section(width=0.2,
                                      height=0.6,
                                      material=concrete_25)

Create the Section

In this step we create the beam Object with the concrete geometries.

beam = sa.Section(section=[rect_20x60])

Add the Rebas

Now it is time to add the rebars to the beam.

beam.addSingleRebar(diameter=16e-3,
                    material=steel_500,
                    position=(-.07, -0.27))
beam.addSingleRebar(diameter=16e-3,
                    material=steel_500,
                    position=(-0.03, -0.27))
beam.addSingleRebar(diameter=16e-3,
                    material=steel_500,
                    position=(0.03, -0.27))
beam.addSingleRebar(diameter=16e-3,
                    material=steel_500,
                    position=(.07, -0.27))

Draw cross-section

Let's check our beam by drawing its cross-section.

beam.plot_section()

Plot Moment vs. Curvature

beam.plot_moment_curvature(k_max=0.025)

Max Moment

beam.get_max_moment()
# 211866

Check Section

We can verify if the beam can support a specific load combination.

e0, k = beam.check_section(normal=0,
                           moment=211866)
# e0: 0.00443
# k:  0.01801

Plot Stress and Strain

We can check the beam's behaviour by inspecting the stress and strain distribution.

beam.plot_stress_strain(e0,k)