Introducing a free, rigorous cross-section analysis tool
- check out the program and its documentation here.
Over the past few months I have been creating and refining a program in python that calculates structural properties for any cross-section imaginable and displays the internal stresses on the section resulting from any combination of design actions. It is finally at a point where I’m ready to share it and its output has been verified through comparison of section property data for standard steel sections.
The motivation for the creation of this software is the lack of a free and rigorous analysis tool that can be used to calculate section properties for complex, built up sections. In developing the program, I also realised that the stress verification of cross-sections subject to multiple design actions can be streamlined through the visualisation of stress contour plots.
This post is intended to introduce the program and highlight its capabilities and simplicity of operation. Later posts will detail the theory behind the calculation of each section property and reveal the inner workings of the program.
Calculated cross-section properties
The program applies the finite element method to calculate the following cross-section properties:
Area Properties: Area, elastic centroid, first and second moments of area, elastic section moduli, radii of gyration, principal bending axis rotation angle, second moments of area, elastic section moduli and radii of gyration about the principal bending axis, elastic centroid (for bending about the centroidal and principal axes), elastic section moduli (for bending about the centroidal and principal axes), corresponding shape factors.
Warping Properties: St. Venant torsion constant, warping constant, shear centre, shear areas (for shear loading about global and principal axes).
The program allows the user to enter the following design actions:
- Axial force
- Bending moments about the x and y axes
- Bending moments about the principal axes
- Torsion moment
- Shear forces in the x and y directions
The following stress plots will then be generated: axial, bending, torsion, transverse shear, combined normal, combined shear and von Mises.
Try it yourself!
If you have a basic understanding of python, the program is very simple to use. Head over to GitHub to download the program and check out the documentation. If you have trouble with anything, including getting the program up and running, performing an analysis or find any bugs, feel free to leave a comment below or flick me an email.
Example analysis: 150 x 90 x 12 UA
A cross-section analysis is performed on an unequal angle section (150D x 100W x 12THK). A mesh size of 2.5 mm2 is used. The following design actions are applied to determine the cross-section stresses:
- Axial force = -50 kN
- Bending moment about x-axis = 3 kN.m
- Bending moment about y-axis = 5 kN.m
- Torsion moment = 1 kN.m
- Transverse shear force in the x-direction = 5 kN
- Transverse shear force in the y-direction = 3 kN
The following code executes the analysis:
import main import sectionGenerator # Create angle section (points, facets, holes) = sectionGenerator.Angle(d=90, b=150, t=12, r_root=10, r_toe=5, n_r=16) # Perform cross-sectional analysis mesh = main.crossSectionAnalysis(points, facets, holes, meshSize=2.5, nu=0.3) # Perform stress analysis main.stressAnalysis(mesh, Nzz=-50e3, Mxx=3e6, Myy=5e6, M11=0, M22=0, Mzz=1e6, Vx=5e3, Vy=3e3)
The mesh used for warping analysis is shown below:
The centroidal locations are shown in the figure below:
Selected annotated section property output is displayed below:
Area = 2746.80182627 cx = 50.9905249131 (x-centroid) cy = 21.2264755268 Ixx_c = 1719026.97045 (Second moment of area about centroidal x-axis) Iyy_c = 6287251.54258 Ixy_c = -1886208.80899 Zxx+ = 24995.4758553 (Elastic section modulus about the centroidal x-axis, considering the top fibre) Zxx- = 80985.0400405 Zyy+ = 63501.5137396 Zyy- = 123302.349864 rx_c = 25.016565267 (Radius of gyration about the centroidal x-axis) ry_c = 47.8428182325 phi = -109.774864162 (Principal bending axis rotation angle) I11_c = 6965393.90567 (Second moment of area about the 11-axis) I22_c = 1040884.60736 Z11+ = 69409.4336954 Z11- = 97758.0099588 Z22+ = 27961.1431946 Z22- = 20764.843276 r1_c = 50.3569220566 r2_c = 19.4664890305 Sxx = 45729.6667122 (Plastic section modulus about the x-axis) Syy = 113546.98153 S11 = 121036.527767 S22 = 43763.8376059 J = 135336.217483 (Torsion constant) Iw = 159998036.954 (Warping constant) x_s,e = -42.9105894905 (x-shear centre) y_s,e = -15.0990405213 A_s,x = 1538.85221978 (Shear area for loading in the x-direction) A_s,y = 855.667113775 A_s,11 = 882.326380418 A_s,22 = 1459.5422681
Selected stress analysis plots are shown below: