Have you ever asked yourself how structural software essentially works? Just keep reading, and you will find how we can use the SkyCiv platform and Python programming through an example developed in a classroom of Structural Analysis.

## A quick review of structural analysis

We often use software available to solve a structural analysis, which results in forces, displacement, stresses, etc. In simple terms, the problem drops into the following form:F=K∙d

F=K∙d

Where:

- F is the vector forces
- K is the structure stiffness
- d is the displacement field

The main goal is to convert a continuous structure into discrete “pieces” of an assembly and analyze it, obtaining forces and displacements. A general path has to be followed:

**Preprocess:**the first step in structural analysis, where we get the structure data, geometry, material properties, and loads and finalize when the global stiffness matrix is constructed.**Process:**where we solve the previous expression, F=K∙d F=K∙d. Some methods generally accepted to solve the linear equations system is Gauss-Jordan, Gaussian elimination, etc.**Postprocess:**the final part to display the results in terms of forces and stress, if necessary.

## Planar frame example

The case example consists of a regular planar frame (Figure 1).

Figure 1. Structural 2D Frame Example

The element’s properties for columns, beams, and materials are:

Structural element | Area, (mm^2) | Inertia, (mm^4) |
---|---|---|

Columns | 93,000 | 720,000,000 |

Girders | 140,000 | 2,430,000,000 |

Concrete properties:

- Material strength, f′c=20MPa f′c=20MPa
- Young’s Modulus, E=17000MPa E=17000MPa

## Python programming and SkyCiv Modelling

Now is the time to start working in parallel with modeling in Python and SkyCiv. Figure 2 shows the input data (nodes, elements, degrees of freedom, local axis orientation) for the code developed in Python. You can check the file yourself and run the example through this link.

Figure 2. Local stiffness matrix function

The Python file uses a functional programming paradigm because it is easy to explain and develop in the classroom. This consists of dividing and conquering, modularizing the code construction and its methods.

When coding the method, the most important is to define the mathematical formulation to apply. We will use the Euler Bernoulli Beam:

In summary, the steps required to run the analysis using Python programming are as follows (We reproduce some parts of the Python script):

- Define nodes and their coordinates (xi, yi )

- Determine the global stiffness matrix for each element (kg)

- Assembly of the global structure stiffness matrix (Sg )

- Determine the global load vector for each element and assembly it into the general structure load vector (P, Pf)

- Solve the general equation for the field displacement ({P – P_f} = [S]{d})

- Obtain the global and local forces for each element (Fi, Qi)

The SkyCiv model and loads applied are shown in figure 3. We only consider one load case, including gravitational and lateral forces applied to nodes.

Figure 3. Loads applied on the frame (Only one combination load case)

## Results and comparison

After running the SkyCiv model and the python file, it is time to compare and analyze the results.

### 1. Field displacement

Figure 4. Total Displacement in SkyCiv (millimeters)

d, mm, SkyCiv | d, mm, Python Script | (Delta )% |
---|---|---|

88.76 | 92.845 | 4.40 |

-0.414 | -0.416 | 0.48 |

141.493 | 151.641 | 6.69 |

-0.652 | -0.653 | 0.153 |

141.284 | 151.423 | 6.69 |

-0.987 | -0.986 | 0.101 |

88.694 | 92.786 | 4.41 |

-0.679 | -0.677 | 0.295 |

The differences in values (Python Script and SkyCiv S3D) are minor, with approximately 2.90% as the mean.

## 2. Axial forces

Figure 5. Axial forces developed into the frame

Q, kN, SkyCiv | Q, kN, Python Script | (Delta )% |
---|---|---|

109.056 | 109.519 | 0.423 |

62.857 | 62.616 | 0.383 |

41.589 | 43.252 | 3.845 |

13.113 | 11.709 | 10.707 |

81.143 | 81.384 | 0.296 |

178.944 | 178.480 | 0.2593 |

The differences in values (Python Script and SkyCiv S3D) are minor, with approximately 2.65 % as the mean.

## 3. Shear forces

Figure 6. Shear forces developed into the frame

Q, kN, SkyCiv | Q, kN, Python Script | (Delta )% |
---|---|---|

35.318 | 35.039 | 0.790 |

35.318 | 35.039 | 0.790 |

-11.569 | 13.252 | 12.700 |

-11.569 | 13.252 | 12.700 |

62.857 | 62.616 | 0.383 |

-81.143 | -81.384 | 0.296 |

46.199 | 46.903 | 1.501 |

-97.801 | -97.097 | 0.720 |

41.569 | 43.252 | 3.891 |

41.569 | 43.252 | 3.891 |

54.682 | 54.961 | 0.508 |

54.682 | 54.961 | 0.508 |

The differences in values (Python Script and SkyCiv S3D) are minor, with approximately 3.22% as the mean.

## 4. Bending moments

Figure 7. Moments developed into the frame

Q, kN-m, SkyCiv | Q, kN-m, Python Script | (Delta )% |
---|---|---|

-130.993 | -133.213 | 1.667 |

80.916 | 77.022 | 4.812 |

37.358 | 42.713 | 12.537 |

-32.057 | -36.797 | 12.881 |

-32.057 | -36.797 | 12.881 |

-141.776 | -149.400 | 5.103 |

43.558 | 34.309 | 21.234 |

-266.054 | -266.859 | 0.302 |

107.639 | 110.109 | 2.243 |

-141.776 | -149.400 | 5.103 |

169.676 | 173.016 | 1.930 |

-158.415 | -156.749 | 1.052 |

The differences in values (Python Script and SkyCiv S3D) are minor, with approximately 6.81% as the mean.

## 5. Conclusion

This post has served as a test that the SkyCiv platform is an excellent resource for educational purposes due to its powerful capacities in structural analysis. Using Python programming and comparing the results with accurate software as SkyCiv, is a must that every engineering course must include in its core content.

## Leave A Comment