📢 NEW COURSE - FEA PLATES AND SHELLS - MEMBER'S EARLY ACCESS
Finite Element Analysis of Plate and Shell Structures in Python

Finite Element Analysis of Plate and Shell Structures in Python

An analysis pipeline for thick and thin plate and shell structures, a roadmap from theory to toolbox

8 h 45 min | 35 lessons
After completing this course...
You will understand how the Reissner-Mindlin formulation enables us to accurately capture both thin and thick plate and shell behaviour, and the key advantages it offers over Kirchhoff plate theory.
You will understand how to turn your understanding of the fundamental mechanics of plate behaviour into a custom finite element solver written in Python.
You will have developed versatile and powerful meshing workflows that utilise Blender and the powerful open-source meshing engine, Gmesh, to create meshes to feed into your solver.
In addition to using your own custom finite element code, you will be comfortable validating your results using OpenSeesPy and Pynite, two of the most widely used open-source finite element analysis libraries
COURSE OVERVIEW

Analytical techniques are great for modelling the simplified behaviour of plate and shell structures, but we quickly run into their limitations when we stray beyond the limiting geometry or assumptions that the models are built upon.

Hyperboloid shell analysis.

Analytical modelling of a hyperboloid shell using thin plate membrane theory.

This is where finite element modelling comes into its own. In this course, we’ll cover the finite element modelling of plate and shell structures by building our own solver based on the incredibly versatile Reissner-Mindlin theory. This approach will allow us to model both thick and thin plate and shell elements, resulting in an extremely versatile and accurate analysis pipeline.

Finite element analysis of a hyperboloid capturing both membrane and bending behaviour and not limited by thin plate theory assumptions. | EngineeringSkills.com

Finite element analysis of a hyperboloid capturing both membrane and bending behaviour and not limited by thin plate theory assumptions.

Building your own solver will give you a much deeper understanding of the underlying theory. That said, we’ll also cover how to implement the same solutions using OpenSeesPy and Pynite - two free and open-source Python libraries.

To complete our modelling and analysis toolset, we’ll also cover mesh generation using vertex modelling in Blender and a more procedural and powerful workflow that uses GMSH, another incredibly powerful open-source meshing library.

Once you’ve completed this course, you’ll have a complete workflow for the analysis of plate and shell structures, backed by a fundamental understanding of the Reissner-Mindlin theory that powers it all!

Course Breakdown

ℹ️ Section by Section Release

This course is being released section by section; as each new section is completed, I’ll be pushing those lectures live inside the course. The course index (on this page) shows the currently available lectures and the sections.

âś… Section 1: Welcome and Setting the Scene

In section one, we outline the course’s main objectives and address housekeeping topics such as how to get help and support and what background knowledge would be beneficial. We’ll also cover a high-level introduction to Reissner–Mindlin theory and discuss why it’s at the heart of the course. Section one is recommended for all course participants.

âś… Section 2: The Mechanics of Plate Elements

In section 2, we begin to dig into the core mechanics. We’ll work through Reissner-Mindlin plate theory and build up the core equations required to establish the element stiffness matrix - the fundamental building block of our solver. If you’re not concerned with the underlying mechanics, you can skip this section and move straight into section 3.

âś… Section 3: Virtual Work and Calculating the Element Stiffness Matrix

In section 3, we’ll initially focus on how the principle of virtual work leads us to the equations for the element stiffness matrix and equivalent force vector for the element. From here, we briefly review the Gauss quadrature numerical integration technique used to calculate the stiffness matrix and force vector.

With the theoretical development complete, we’ll turn our attention to Python implementation and focus on how to actually compute the stiffness matrix and equivalent force vector. Lectures 17 to 20 are recommended for anyone who wants to implement the custom FEM solver in the next section.

âś… Section 4: Expanding to a Full Plate Element Solver

In section 4, we take what we implemented on a single element level in the previous section and expand it to build a solver for a rectangular plate consisting of multiple elements. This is our first big coding section where we implement a complete plate solver from scratch.

Section 5: Benchmarking against OpenSeesPy and Pynite

In section 5, we validate the output from our custom analysis against equivalent structural models built with both OpenSeesPy and Pynite. Validating our code against these open-source libraries is critical at this early stage and will allow us to move forward with more confidence in our work. It will also surface a phenomenon known as shear-locking, which we’ll need to tackle to ensure the accuracy of our custom solver.

Section 6: Meshing with GMSH and Python

So far, all of our plate analysis has been on rectangular plates that consist of rectangular elements. Practically, we’ll need to be able to analyse plates of all shapes and sizes consisting of non-rectangular or quadrilateral elements. To do this, we’ll need a more sophisticated method of generating finite element meshes. This can be quite a complex pre-process step, so to help us out here, we’ll introduce GMSH, another open-source library, in section 6.

Our aim in this section is to build the pre-processing meshing step into the analysis pipelines for both our custom FE solver and our validation workflows that use OpenSeesPy and Pynite.

Section 7: Expanding the Mechanics for Flat Shell Elements

At this stage in the course, we’ll have an excellent theoretical and practical understanding of how to analyse plate structures. Now it’s time to turn our attention to Reissner-Mindlin shell elements. The good news is that we have completed most of the theoretical work in our study of plate elements. To expand to shell elements is actually quite straightforward from here. If you don’t require this theoretical background and prefer to focus on implementation, feel free to skip this section.

Section 8: Building a Shell Element Solver

In section 8, we’ll extend and modify our plate analysis code to handle structures that consist of flat shell elements. Again, the tricky work is mostly behind us at this stage and adapting our plate code for shell elements is relatively easy. The output from section 8 is a custom finite element solver for shell structures that resist both in-plane and out-of-plane actions.

Section 9: Benchmark Case-Studies

In section 9, we shift our focus back to validation and use our new shell solver to analyse some simple validation case studies. Again, it’s critical that, having just implemented a new analysis code, we take the time to validate its output before we move on. By the end of section 9, we’ll be confident to push our solver to analyse more complex and interesting geometries.

Section 10: Generating shell mesh data

In the previous section, we focused on using our shell solver to analyse quite simple geometries. But, just like our plate analysis earlier, we’ll want to deploy our code on more complex geometries. So in section 10, we’ll explore different techniques for modelling and meshing shell structures and piping those meshes into our custom solver code.

Section 11: Comparison with OpenSeesPy

Finally, in Section 11, we’ll again perform a validation exercise, comparing the output from our solver to an equivalent model that uses OpenSeesPy as the analysis engine. At this point, you’ll have an excellent grasp of how to handle the analysis of plate and shell structures.

You will also have developed two parallel analysis pipelines, one that uses your own custom solver backed by a clear understanding of the theory and a second pipeline that uses some of the best open-source libraries available today. In addition, you’ll have various strategies for turning basic geometry into finite element-ready meshes that can be processed in either pipeline.

Who is this course for?

  • Engineers and student engineers that want to build a deeper understanding of the mechanics of plate and shell structures.
  • Engineers that want to leverage the power of Python and in particular open-source tools for complex structural analysis.
  • Anyone who has completed Finite Element Analysis of Continuum Structures in Python and wants to expand on what was covered in that course.
ℹ️ Completion Certificates

Note that certificates of completion will be available for download when the full course is published.

Section 1
Welcome and Setting the Scene
49 min | 4 lessons
1. Welcome to the course - roadmap overview
07:40 (Preview)
2. Housekeeping - Python, pre-requisites and tips for success
06:17 (Preview)
3. Plate theories and why Reissner-Mindlin? đź“‚
19:21
4. High-level primer - what are we trying to do? đź“‚
16:11
Section 2
The Mechanics of Plate Elements
1 h 49 min | 8 lessons
5. Section overview - The Mechanics of Plate Elements
01:52 (Preview)
6. The displacement and strain fields đź“‚
32:43
7. Relating stress and strain - the constitutive matrix D đź“‚
09:12
8. From stresses to stress resultants đź“‚
22:15
9. The role of shape functions đź“‚
10:30
10. The strain-displacement matrix, B đź“‚
10:07
11. The Jacobian’s role in calculating B 📂
06:39
12. Pause, recap and regroup đź“‚
16:15
Section 3
Virtual Work and Calculating the Element Stiffness Matrix
2 h 7 min | 8 lessons
13. Section overview - Virtual Work and Calculating the Element Stiffness Matrix
01:32 (Preview)
14. How Virtual Works leads to the element equations đź“‚
20:47
15. A primer on numerical integration đź“‚
11:42
16. Numerical integration applied to our element đź“‚
13:13
17. Setting up our stiffness matrix calculation đź“‚
18:01
18. Calculating an element stiffness matrix đź“‚
33:23
19. Calculating the shear and bending stiffness đź“‚
16:09
20. Calculating the equivalent nodal force vector đź“‚
12:43
Section 4
Expanding to a full plate element solver
3 h 58 min | 15 lessons
21. Section overview - Expanding to a full plate element solver
01:28 (Preview)
22. Procedurally generating a rectangular mesh đź“‚
24:30
23. Defining plate constraints đź“‚
11:08
24. Defining the self-weight force vector đź“‚
10:35
25. Building the structure stiffness matrix đź“‚
10:05
26. Solving the system and extracting reaction forces đź“‚
28:13
27. Plotting the plate displacements đź“‚
18:10
28. Building an evaluation grid for stress resultants đź“‚
10:31
29. Calculating the moments and shears đź“‚
22:00
30. Visualising the plate bending moments đź“‚
14:13
31. Extracting shear forces đź“‚
29:04
32. Visualising the plate shear forces đź“‚
12:21
33. Adding strip and edge masking to the shear plot đź“‚
26:04
34. Adding magnitude clipping to the shear plot đź“‚
10:40
35. Building an interpolation utility function đź“‚
09:53
Section 5
Benchmarking against OpenSeesPy and Pynite
Section 6
Meshing with GMSH and Python
Section 7
Expanding the Mechanics for Flat Shell Elements
Section 8
Building a Shell Element Solver
Section 9
Generating shell mesh data
Section 10
Benchmark case-studies
Section 11
Comparison with OpenSeesPy
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?
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, follow me on LinkedIn and subscribe to me on Youtube.

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...
Finite Element Analysis of Continuum Structures in Python
Finite Element Analysis of Continuum Structures in Python
Use the Isoparametric Finite Element Method to build an analysis tool for 2D structures in Python.

Frequently asked questions