The Direct Stiffness Method for Truss Analysis with Python

The Direct Stiffness Method for Truss Analysis with Python

Build your own finite element truss analysis software using Python and tackle large scale structures.

⏰ 7 h 52 min | 56 lessons
Published: July 2020, (updated 1 year ago)
After completing this course...
You’ll learn how to use the Direct Stiffness Method to build complete structural models that can be solved using Python.
You’ll build your own truss analysis programme that can be used to identify displacements, reactions and internal member forces for any truss structure.
You’ll learn about common models of elastic behaviour such as plane stress and plane strain and how they apply to real-world structures.
You’ll learn about stiffness matrices and how the Principle of Minimum Potential Energy can be used to determine the stiffness matrix of any structural element.
COURSE OVERVIEW

Welcome to this EngineeringSkills course on the Direct Stiffness Method for Truss Analysis with Python. The aim of this course is to equip you with the tools and knowledge to build your own truss analysis software using the Direct Stiffness Method. In this course you’ll develop a truss solver that can determine axial forces and deflected shapes for pin-jointed truss structures.

2D Truss

By the time you complete this course you’ll have written a piece of software to deploy on your own analysis projects.

Understanding structural analysis theory and hand-analysis techniques is an essential requirement of any competent engineer. It informs our intuition of structural behaviour and provides a foundation from which we can analyse complex structures.

However, most large structural analyses leverage the speed of structural analysis software. And modern structural analysis software is dominated by matrix analysis methods like the direct stiffness method. In this course you’ll implement these techniques to build your own version of a structural analysis software.

Course Breakdown

This course is broken into 9 sections that build progressively towards our goal of developing a generalised truss solver.

Section 1 – Introduction and course overview

The main goal of this brief introductory section is to get your coding environment set up and to give you an idea of how we approach using and learning Python in this course.

Section 2 – Modelling Elastic Behaviour

We’ll start by focusing on fundamental models of elastic behaviour. If we don’t understand the material behaviour we can’t understand the overall structural behaviour. So the lectures in this section are very important in developing a complete understanding of structural behaviour.

Section 3 – Finite Element Equations & Stiffness Matrices

We’ll expand our focus from material behaviour to modelling structural stiffness and in particular we’ll develop a stiffness matrix for an axially loaded bar element. The aim of this section is to build a stiffness matrix that we can combine with other element stiffness matrices to model a complete structure.

Section 4 – Direct Stiffness Method: Step-by-Step

In this section we shift gears and put what we’ve learned so far to work. We’ll walk our way step-by-step through the direct stiffness method starting with very simple two bar truss. This will allow you to see the process in action on a very simple structure.

Section 5 – Direct Stiffness Method in Python

Now that you understand conceptually how the direct stiffness method works, we’ll implement it in Python using a Jupyter notebook. This is our first step along the road to building a completely general truss analysis notebook.

Section 6 – Direct Stiffness Method on Larger Structures

In section six we’re going to analyse another larger truss structure. As in section 4, we’ll walk our way through the solution step-by-step to make sure you fully understand the analysis procedure. This section is about getting the reps in and giving you more practice on a larger structure.

Section 7 – Optimising for Larger Structures in Python

We’ll again implement our solution in code by porting our solution from section 6 into a Jupyter notebook. In this section we’ll continue taking steps towards our overall goal of a generalised truss solver by further generalising our analysis code.

Section 8 – Building a Generalised Truss Solver in Python

In section 8 we bring together all of the code we’ve worked on so far and completely generalise it. This means we’ll be writing code in this section to analyse any truss structure. This is where we finally achieve the goal of developing a generalised truss solver.

Section 9 – Taking your Solver for a Test Drive

In the final section of the course we take a victory lap and take your new truss solver for a test drive. This short section is simply about making sure you can input structural data correctly into your solver and admiring your handy work as your code takes over and completes your structural analysis.

Who this course is for

  • Engineering students who want an introduction to computer-based methods of structural analysis
  • Engineering students who’ve studied the Direct Stiffness Method but got lost along the way
  • Engineers and students who want to see how they can leverage Python in their work
  • Engineers and students who want a tools to analyse realistic structures without resorting to commercial software

The codes developed in this course are for educational purposes only and are not tested or certified for use beyond the educational scope of this course. Always employ your own engineering judgement first and foremost, regardless of what the computer says!

Section 2
Modelling Elastic Behaviour
4. Section 2 overview
01:08 (Preview)
5. Stress and strain in 2D
14:48 (Preview)
6. Strain & displacement in 2D
12:25
7. 3 dimensions and matrix notation
19:08
8. Plane Stress condition
16:41
9. Plane Strain condition
06:52
10. Material matrix summary
08:40
Section 3
Finite Element Equations & Stiffness Matrices
11. Section 3 overview
01:39 (Preview)
12. Finite Element equations and the Direct Stiffness method
21:25 (Preview)
13. The Principle of Minimum Potential Energy
15:18
14. The Finite Element equations
13:48
15. Stiffness matrix for bar element
13:13
16. Finite element equation review
14:16
17. Transformation from local to global coordinates
16:31
Section 4
Direct Stiffness Method: Step-by-Step
18. Section 4 overview
01:38 (Preview)
19. Analysis procedure overview 📂
06:07 (Preview)
20. Calculating element stiffness matrices
04:37
21. Building the primary stiffness matrix
06:24
22. Reducing to structure stiffness matrix
04:48
23. Solve for unknown displacements
01:39
24. Solve for unknown reactions
02:43
25. Finding element forces
05:31
Section 5
Direct Stiffness Method in Python
26. Section 5 overview
01:24 (Preview)
27. Element stiffness matrices 📂
14:48 (Preview)
28. Whole structure stiffness matrix
11:52
29. Reactions, element forces and nodal displacements
12:58
30. Visualising our output
13:00
31. Refactor - Tidying up with functions 📂
17:33
Section 6
Direct Stiffness Method on Larger Structures
32. Section 6 overview
00:57 (Preview)
33. Calculating element stiffness matrices 📂
04:28
34. Building the primary stiffness matrix
03:47
35. Reducing to structure stiffness matrix
01:44
36. Solve for unknown displacements
01:05
37. Solve for unknown reactions
01:19
38. Finding element forces
03:35
Section 7
Optimising for Larger Structures in Python
39. Section 7 overview
01:06 (Preview)
40. Building the primary stiffness matrix 📂
19:09
41. Extracting the structure stiffness matrix
03:00
42. Displacements and reactions
09:29
43. Calculating member forces
04:58
44. Visualising our output
10:16
Section 8
Building a Generalised Truss Solver in Python
45. Section 8 overview
01:06
46. Establishing input data 📂
07:16
47. Calculating member orientation and length
27:43
48. Primary and Structure Stiffness matrices
10:07
49. Displacements, reactions and member forces
16:30
50. Automating the output visualisation
10:04
51. Automating the text summary
10:35
Section 9
Taking your Solver for a Test Drive
52. Section 9 overview
00:45 (Preview)
53. Test Question #1 📂
09:44 (Preview)
54. Test Question #2 📂
05:58
55. Test Question #3 📂
04:07
56. Course wrap up and debrief
01:38
Completion certificate
Completion certificate
  • Download your personalised Certificate of Completion once you’ve finished all course lectures.

  • Applying for jobs? Use your Certificate of Completion to show prospective employers what you’ve been doing to improve your capabilities.

  • Independently completing an online course is an achievement. Let people know about it by posting your Certificate of Completion on your Linkedin profile or workplace CPD portfolio.

Ready to get started?
Dr Carroll's years of experience as a lecturer is reflected in the way the course is presented. He knows how to simplify difficult concepts for better understanding. I appreciate how the foundational knowledge behind the Direct Stiffness method was established from first principles as well. It left me feeling grounded. Python implementation is an added bonus. Excellent course!
Evans
getting-started
Dr Seán Carroll
BEng (Hons), MSc, PhD, CEng MIEI, FHEA
Hi, I’m Seán, the founder of EngineeringSkills.com (formerly DegreeTutors.com). I hope you found this tutorial helpful. After spending 10 years as a university lecturer in structural engineering, I started this site to help more people understand engineering and get as much enjoyment from studying it as I do. Feel free to get in touch or follow me on any of the social accounts.

Do you have some knowledge or expertise you'd like to share with the EngineeringSkills community?
Check out our guest writer programme - we pay for every article we publish.
You Might Also be Interested In...
Beam and Frame Analysis using the Direct Stiffness Method in Python
Beam and Frame Analysis using the Direct Stiffness Method in Python
Build a sophisticated structural analysis software tool that models beams and frames using Python.

The Direct Stiffness Method Course Bundle

The complete starter pack for learning the Direct Stiffness Method with Python.

  • The Direct Stiffness Method for Truss Analysis with Python
  • Beam and Frame Analysis using the Direct Stiffness Method in Python
  • 3D Space Frame Analysis using Python and Blender

Frequently asked questions